summaryrefslogtreecommitdiff
path: root/support/dktools/Dk4WxControl.cpp
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/dktools/Dk4WxControl.cpp
Initial commit
Diffstat (limited to 'support/dktools/Dk4WxControl.cpp')
-rw-r--r--support/dktools/Dk4WxControl.cpp304
1 files changed, 304 insertions, 0 deletions
diff --git a/support/dktools/Dk4WxControl.cpp b/support/dktools/Dk4WxControl.cpp
new file mode 100644
index 0000000000..49fc86e6ff
--- /dev/null
+++ b/support/dktools/Dk4WxControl.cpp
@@ -0,0 +1,304 @@
+/*
+ WARNING: This file was generated by dkct.
+ Changes you make here will be lost if dkct is run again!
+ You should modify the original source and run dkct on it.
+ Original source: Dk4WxControl.cpt
+*/
+
+/*
+Copyright (C) 2015-2017, Dirk Krause
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above opyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* Neither the name of the author nor the names of contributors may be used
+ to endorse or promote products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/** @file Dk4WxControl.cpp The Dk4WxControl module.
+*/
+
+
+#line 205 "Dk4WxControl.cpt"
+
+#include "Dk4WxControl.h"
+
+
+
+
+
+#line 211 "Dk4WxControl.cpt"
+
+
+
+const wxChar Dk4WxControl::Dk4WxControlName[] = { wxT("Dk4WxControl") };
+
+
+IMPLEMENT_DYNAMIC_CLASS(Dk4WxControl, wxControl)
+
+BEGIN_EVENT_TABLE(Dk4WxControl, wxControl)
+ EVT_ERASE_BACKGROUND(Dk4WxControl::OnErase)
+ EVT_PAINT(Dk4WxControl::OnPaint)
+END_EVENT_TABLE()
+
+
+
+Dk4WxControl::Dk4WxControl()
+: wxControl()
+{
+
+
+#line 230 "Dk4WxControl.cpt"
+ pBitmap = NULL;
+ iBmWidth = -1;
+ iBmHeight = -1;
+ SetBackgroundStyle(wxBG_STYLE_CUSTOM);
+
+
+#line 235 "Dk4WxControl.cpt"
+}
+
+
+
+bool
+Dk4WxControl::Create(
+ wxWindow *parent,
+ wxWindowID wid,
+ const wxPoint & pos,
+ const wxSize & size,
+ long style,
+ const wxValidator & validator,
+ const wxChar *name
+)
+{
+ bool back;
+
+
+#line 252 "Dk4WxControl.cpt"
+ back = wxControl::Create(
+ parent, wid, pos, size, style, validator, name
+ );
+ pBitmap = NULL;
+ iBmWidth = -1;
+ iBmHeight = -1;
+ SetBackgroundStyle(wxBG_STYLE_CUSTOM);
+
+
+#line 260 "Dk4WxControl.cpt"
+ return back;
+}
+
+
+
+Dk4WxControl::Dk4WxControl(
+ wxWindow *parent,
+ wxWindowID wid,
+ const wxPoint & pos,
+ const wxSize & size,
+ long style,
+ const wxValidator & validator,
+ const wxChar *name
+)
+: wxControl( parent, wid, pos, size, style, validator, wxString(name))
+{
+
+
+#line 277 "Dk4WxControl.cpt"
+ pBitmap = NULL;
+ iBmWidth = -1;
+ iBmHeight = -1;
+ SetBackgroundStyle(wxBG_STYLE_CUSTOM);
+
+
+#line 282 "Dk4WxControl.cpt"
+}
+
+
+
+Dk4WxControl::~Dk4WxControl()
+{
+
+
+#line 289 "Dk4WxControl.cpt"
+ {
+ wxCriticalSectionLocker lock(csProtect);
+ if (NULL != pBitmap) { delete(pBitmap); }
+ pBitmap = NULL;
+ iBmWidth = -1;
+ iBmHeight = -1;
+ }
+
+
+#line 297 "Dk4WxControl.cpt"
+}
+
+
+
+void
+Dk4WxControl::OnErase(wxEraseEvent & event)
+{
+
+
+#line 305 "Dk4WxControl.cpt"
+
+
+#line 306 "Dk4WxControl.cpt"
+}
+
+
+
+void
+Dk4WxControl::PaintOperation(
+ wxDC & pdc,
+ wxPaintEvent & event,
+ bool buffered,
+ int clWidth,
+ int clHeight
+)
+{
+ pdc.SetBrush(*wxWHITE_BRUSH);
+ pdc.DrawRectangle(0, 0, clWidth, clHeight);
+}
+
+
+
+void
+Dk4WxControl::InternalPaint(
+ wxDC & pdc,
+ wxPaintEvent & event,
+ bool buffered,
+ int clWidth,
+ int clHeight
+)
+{
+ /* Save current DC settings.
+ */
+ wxBrush const br = pdc.GetBrush();
+ wxBrush const bg = pdc.GetBackground();
+ wxFont const fn = pdc.GetFont();
+ wxPen const pn = pdc.GetPen();
+ wxColour const tbg = pdc.GetTextBackground();
+ wxColour const tfg = pdc.GetTextForeground();
+ int bgm = pdc.GetBackgroundMode();
+
+
+#line 344 "Dk4WxControl.cpt"
+ /* Do the real pain operation.
+ */
+ PaintOperation(pdc, event, buffered, clWidth, clHeight);
+ /* Restore DC settings from start.
+ */
+ pdc.SetBackgroundMode(bgm);
+ pdc.SetTextForeground(tfg);
+ pdc.SetTextBackground(tbg);
+ pdc.SetPen(pn);
+ pdc.SetFont(fn);
+ pdc.SetBackground(bg);
+ pdc.SetBrush(br);
+
+
+#line 357 "Dk4WxControl.cpt"
+}
+
+
+
+void
+Dk4WxControl::OnPaint(wxPaintEvent & event)
+{
+ wxPaintDC paintDC(this);
+ int w = 0;
+ int h = 0;
+ bool mustDraw = false;
+ bool done = false;
+
+
+#line 370 "Dk4WxControl.cpt"
+ {
+ wxCriticalSectionLocker lock(csProtect);
+ wxSize sz = GetClientSize();
+ mustDraw = bUpdate;
+#if VERSION_BEFORE_20150821
+ w = iBmWidth;
+ h = iBmHeight;
+#endif
+ if (NULL != pBitmap) {
+ if ((iBmWidth != sz.x) || (iBmHeight != sz.y)) {
+ delete(pBitmap);
+ pBitmap = NULL;
+ }
+ }
+ w = iBmWidth = sz.x;
+ h = iBmHeight = sz.y;
+ if (NULL == pBitmap) {
+ pBitmap = new wxBitmap(iBmWidth, iBmHeight);
+ mustDraw = true;
+ }
+ if (NULL != pBitmap) {
+ if (mustDraw) {
+ wxMemoryDC memDC;
+ memDC.SelectObject(*pBitmap);
+ InternalPaint(memDC, event, true, w, h);
+ memDC.SelectObject(wxNullBitmap);
+ bUpdate = false;
+ }
+ paintDC.DrawBitmap(*pBitmap, 0, 0, false);
+ done = true;
+ }
+ }
+ if (!(done)) {
+ InternalPaint(paintDC, event, false, w, h);
+ }
+
+
+#line 406 "Dk4WxControl.cpt"
+}
+
+
+
+void
+Dk4WxControl::SetUpdate(bool flag)
+{
+
+
+#line 414 "Dk4WxControl.cpt"
+ if (flag) {
+ wxCriticalSectionLocker lock(csProtect);
+ bUpdate = true;
+ }
+
+
+#line 419 "Dk4WxControl.cpt"
+}
+
+
+
+void
+Dk4WxControl::ReleaseBuffer(void)
+{
+ {
+ wxCriticalSectionLocker lock(csProtect);
+ if (NULL != pBitmap) {
+ delete(pBitmap);
+ pBitmap = NULL;
+ }
+ }
+}
+