caret.cpp Generic NotMSW,NotMicro
choicdgg.cpp Generic
colrdlgg.cpp Generic Generic
+dcbuffer.cpp Generic
dcpsg.cpp Generic
dirctrlg.cpp Generic
dirdlgg.cpp Generic NotWin32,NotOS2
dbtable.h WXH Base
dc.h WXH
dcclient.h WXH
+dcbuffer.h WXH
dcmemory.h WXH
dcprint.h WXH
dcps.h WXH
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/dcbuffer.h
+// Purpose: wxBufferedDC class
+// Author: Ron Lee <ron@debian.org>
+// Modified by:
+// Created: 16/03/02
+// RCS-ID: $Id$
+// Copyright: (c) Ron Lee
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_DCBUFFER_H_
+#define _WX_DCBUFFER_H_
+
+#ifdef __GNUG__
+#pragma interface "dcbuffer.h"
+#endif
+
+#include "wx/dcmemory.h"
+
+
+// ==============================================================
+// Double buffering helper.
+// --------------------------------------------------------------
+
+class wxBufferedDC : public wxMemoryDC
+{
+private:
+
+ // Without the existence of a wxNullDC, this must be
+ // a pointer, else it could probably be a reference.
+
+ wxDC *m_dc;
+ wxBitmap m_buffer;
+
+public:
+
+ // Default ctor, must subsequently call Init for
+ // two stage construction.
+
+ wxBufferedDC()
+ : m_dc( 0 )
+ {}
+
+ // Construct a wxBufferedDC using a user supplied buffer.
+
+ wxBufferedDC( wxDC *dc, const wxBitmap &buffer );
+
+ // Construct a wxBufferedDC with an internal buffer of 'area'
+ // (where area is usually something like the size of the window
+ // being buffered)
+
+ wxBufferedDC( wxDC *dc, const wxSize &area );
+
+ // default copy ctor ok.
+
+ // The usually desired action in the dtor is to blit the buffer.
+
+ ~wxBufferedDC();
+
+ // These reimplement the actions of the ctors for
+ // two stage creation, but are not used by the ctors
+ // themselves to save a few cpu cycles.
+
+ void Init( wxDC *dc, const wxBitmap &bitmap );
+ void Init( wxDC *dc, const wxSize &area );
+
+ // Blits the buffer to the dc, and detaches the dc from
+ // the buffer. Usually called in the dtor or by the dtor
+ // of derived classes if the BufferedDC must blit before
+ // the derived class (which may own the dc it's blitting
+ // to) is destroyed.
+
+ void UnMask();
+};
+
+
+// ==============================================================
+// Double buffered PaintDC.
+// --------------------------------------------------------------
+
+// Creates a double buffered wxPaintDC, optionally allowing the
+// user to specify their own buffer to use.
+
+class wxBufferedPaintDC : public wxBufferedDC
+{
+private:
+
+ wxPaintDC m_paintdc;
+
+public:
+
+ wxBufferedPaintDC( wxWindow *window, const wxBitmap &buffer = wxNullBitmap );
+
+ // default copy ctor ok.
+
+ ~wxBufferedPaintDC();
+};
+
+
+#endif // _WX_DCBUFFER_H_
+
+// vi:sts=4:sw=4:et
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: dcbuffer.cpp
+// Purpose: wxBufferedDC class
+// Author: Ron Lee <ron@debian.org>
+// Modified by:
+// Created: 16/03/02
+// RCS-ID: $Id$
+// Copyright: (c) Ron Lee
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+
+#ifdef __GNUG__
+ #pragma implementation "dcbuffer.h"
+#endif
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#include "wx/dcbuffer.h"
+
+
+// ==============================================================
+// Double buffering helper.
+// --------------------------------------------------------------
+
+wxBufferedDC::wxBufferedDC( wxDC *dc, const wxBitmap &buffer )
+ : m_dc( dc )
+ , m_buffer( buffer )
+{
+ SelectObject( m_buffer );
+}
+
+wxBufferedDC::wxBufferedDC( wxDC *dc, const wxSize &area )
+ : m_dc( dc )
+ , m_buffer( area.GetWidth(), area.GetHeight() )
+{
+ SelectObject( m_buffer );
+}
+
+wxBufferedDC::~wxBufferedDC()
+{
+ if( m_dc != 0 )
+ {
+ UnMask();
+ }
+}
+
+void wxBufferedDC::Init( wxDC *dc, const wxBitmap &buffer )
+{
+ wxASSERT_MSG( m_dc == 0 && m_buffer == wxNullBitmap,
+ _T("wxBufferedDC already initialised") );
+
+ m_dc = dc;
+ m_buffer = buffer;
+ SelectObject( m_buffer );
+}
+
+void wxBufferedDC::Init( wxDC *dc, const wxSize &area )
+{
+ wxASSERT_MSG( m_dc == 0 && m_buffer == wxNullBitmap,
+ _T("wxBufferedDC already initialised") );
+
+ m_dc = dc;
+ m_buffer = wxBitmap( area.GetWidth(), area.GetHeight() );
+ SelectObject( m_buffer );
+}
+
+void wxBufferedDC::UnMask()
+{
+ wxASSERT_MSG( m_dc != 0, _T("No low level DC associated with buffer (anymore)") );
+
+ m_dc->Blit( 0, 0, m_buffer.GetWidth(), m_buffer.GetHeight(), this, 0, 0 );
+ m_dc = 0;
+}
+
+
+// ==============================================================
+// Double buffered PaintDC.
+// --------------------------------------------------------------
+
+wxBufferedPaintDC::wxBufferedPaintDC( wxWindow *window, const wxBitmap &buffer )
+ : m_paintdc( window )
+{
+ window->PrepareDC( m_paintdc );
+
+ if( buffer != wxNullBitmap )
+ Init( &m_paintdc, buffer );
+ else
+ Init( &m_paintdc, window->GetClientSize() );
+}
+
+wxBufferedPaintDC::~wxBufferedPaintDC()
+{
+ // We must UnMask here, else by the time the base class
+ // does it, the PaintDC will have already been destroyed.
+
+ UnMask();
+}
+
+
+// vi:sts=4:sw=4:et
generic/caret.cpp \
generic/choicdgg.cpp \
generic/colrdlgg.cpp \
+ generic/dcbuffer.cpp \
generic/dcpsg.cpp \
generic/dirctrlg.cpp \
generic/dirdlgg.cpp \
dbkeyg.h \
dbtable.h \
dc.h \
+ dcbuffer.h \
dcclient.h \
dcmemory.h \
dcprint.h \
caret.o \
choicdgg.o \
colrdlgg.o \
+ dcbuffer.o \
dcpsg.o \
dirctrlg.o \
dirdlgg.o \
caret.o \
choicdgg.o \
colrdlgg.o \
+ dcbuffer.o \
dcpsg.o \
dirctrlg.o \
dirdlgg.o \
generic/caret.cpp \
generic/choicdgg.cpp \
generic/colrdlgg.cpp \
+ generic/dcbuffer.cpp \
generic/dcpsg.cpp \
generic/dirctrlg.cpp \
generic/dirdlgg.cpp \
dbkeyg.h \
dbtable.h \
dc.h \
+ dcbuffer.h \
dcclient.h \
dcmemory.h \
dcprint.h \
caret.o \
choicdgg.o \
colrdlgg.o \
+ dcbuffer.o \
dcpsg.o \
dirctrlg.o \
dirdlgg.o \
caret.o \
choicdgg.o \
colrdlgg.o \
+ dcbuffer.o \
dcpsg.o \
dirctrlg.o \
dirdlgg.o \
generic/caret.cpp \
generic/choicdgg.cpp \
generic/colrdlgg.cpp \
+ generic/dcbuffer.cpp \
generic/dcpsg.cpp \
generic/dirctrlg.cpp \
generic/dirdlgg.cpp \
dbkeyg.h \
dbtable.h \
dc.h \
+ dcbuffer.h \
dcclient.h \
dcmemory.h \
dcprint.h \
caret.o \
choicdgg.o \
colrdlgg.o \
+ dcbuffer.o \
dcpsg.o \
dirctrlg.o \
dirdlgg.o \
generic/caret.cpp \
generic/choicdgg.cpp \
generic/colrdlgg.cpp \
+ generic/dcbuffer.cpp \
generic/dcpsg.cpp \
generic/dirctrlg.cpp \
generic/dirdlgg.cpp \
dbkeyg.h \
dbtable.h \
dc.h \
+ dcbuffer.h \
dcclient.h \
dcmemory.h \
dcprint.h \
caret.o \
choicdgg.o \
colrdlgg.o \
+ dcbuffer.o \
dcpsg.o \
dirctrlg.o \
dirdlgg.o \
generic/caret.cpp \
generic/choicdgg.cpp \
generic/colrdlgg.cpp \
+ generic/dcbuffer.cpp \
generic/dcpsg.cpp \
generic/dirctrlg.cpp \
generic/dirdlgg.cpp \
dbkeyg.h \
dbtable.h \
dc.h \
+ dcbuffer.h \
dcclient.h \
dcmemory.h \
dcprint.h \
caret.o \
choicdgg.o \
colrdlgg.o \
+ dcbuffer.o \
dcpsg.o \
dirctrlg.o \
dirdlgg.o \
caret.obj &
choicdgg.obj &
colrdlgg.obj &
+ dcbuffer.obj &
dcpsg.obj &
dirctrlg.obj &
dirdlgg.obj &
colrdlgg.obj: $(GENDIR)\colrdlgg.cpp
*$(CCC) $(CPPFLAGS) $(IFLAGS) $<
+dcbuffer.obj: $(GENDIR)\dcbuffer.cpp
+ *$(CCC) $(CPPFLAGS) $(IFLAGS) $<
+
dcpsg.obj: $(GENDIR)\dcpsg.cpp
*$(CCC) $(CPPFLAGS) $(IFLAGS) $<
generic/calctrl.cpp \
generic/choicdgg.cpp \
generic/colrdlgg.cpp \
+ generic/dcbuffer.cpp \
generic/dcpsg.cpp \
generic/dirctrlg.cpp \
generic/dirdlgg.cpp \
dbkeyg.h \
dbtable.h \
dc.h \
+ dcbuffer.h \
dcclient.h \
dcmemory.h \
dcprint.h \
calctrl.o \
choicdgg.o \
colrdlgg.o \
+ dcbuffer.o \
dcpsg.o \
dirctrlg.o \
dirdlgg.o \
generic/caret.cpp \
generic/choicdgg.cpp \
generic/colrdlgg.cpp \
+ generic/dcbuffer.cpp \
generic/dcpsg.cpp \
generic/dirctrlg.cpp \
generic/dirdlgg.cpp \
dbkeyg.h \
dbtable.h \
dc.h \
+ dcbuffer.h \
dcclient.h \
dcmemory.h \
dcprint.h \
caret.o \
choicdgg.o \
colrdlgg.o \
+ dcbuffer.o \
dcpsg.o \
dirctrlg.o \
dirdlgg.o \
generic/busyinfo.cpp \
generic/calctrl.cpp \
generic/choicdgg.cpp \
+ generic/dcbuffer.cpp \
generic/dcpsg.cpp \
generic/dirctrlg.cpp \
generic/dragimgg.cpp \
dbkeyg.h \
dbtable.h \
dc.h \
+ dcbuffer.h \
dcclient.h \
dcmemory.h \
dcprint.h \
busyinfo.o \
calctrl.o \
choicdgg.o \
+ dcbuffer.o \
dcpsg.o \
dirctrlg.o \
dragimgg.o \
GENERICOBJS= $(MSWDIR)\busyinfo.obj \
$(MSWDIR)\calctrl.obj \
$(MSWDIR)\choicdgg.obj \
+ $(MSWDIR)\dcbuffer.obj \
$(MSWDIR)\dcpsg.obj \
$(MSWDIR)\dirctrlg.obj \
$(MSWDIR)\dragimgg.obj \
$(MSWDIR)\choicdgg.obj: $(GENDIR)\choicdgg.$(SRCSUFF)
+$(MSWDIR)\dcbuffer.obj: $(GENDIR)\dcbuffer.$(SRCSUFF)
+
$(MSWDIR)\dcpsg.obj: $(GENDIR)\dcpsg.$(SRCSUFF)
$(MSWDIR)\dirctrlg.obj: $(GENDIR)\dirctrlg.$(SRCSUFF)
GENERICOBJS= $(MSWDIR)\busyinfo.obj \
$(MSWDIR)\calctrl.obj \
$(MSWDIR)\choicdgg.obj \
+ $(MSWDIR)\dcbuffer.obj \
$(MSWDIR)\dcpsg.obj \
$(MSWDIR)\dirctrlg.obj \
$(MSWDIR)\dirdlgg.obj \
$(MSWDIR)\choicdgg.obj: $(GENDIR)\choicdgg.$(SRCSUFF)
+$(MSWDIR)\dcbuffer.obj: $(GENDIR)\dcbuffer.$(SRCSUFF)
+
$(MSWDIR)\dcpsg.obj: $(GENDIR)\dcpsg.$(SRCSUFF)
$(MSWDIR)\dirctrlg.obj: $(GENDIR)\dirctrlg.$(SRCSUFF)
GENERICOBJS= $(GENDIR)\busyinfo.obj \
$(GENDIR)\calctrl.obj \
$(GENDIR)\choicdgg.obj \
+ $(GENDIR)\dcbuffer.obj \
$(GENDIR)\dcpsg.obj \
$(GENDIR)\dirctrlg.obj \
$(GENDIR)\dirdlgg.obj \
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
<<
+$(GENDIR)/dcbuffer.obj: $*.$(SRCSUFF)
+ cl @<<
+$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
+<<
+
$(GENDIR)/dcpsg.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF)
$(GENDIR)/busyinfo.$(OBJSUFF) \
$(GENDIR)/calctrl.$(OBJSUFF) \
$(GENDIR)/choicdgg.$(OBJSUFF) \
+ $(GENDIR)/dcbuffer.$(OBJSUFF) \
$(GENDIR)/dcpsg.$(OBJSUFF) \
$(GENDIR)/dirctrlg.$(OBJSUFF) \
$(GENDIR)/dragimgg.$(OBJSUFF) \
GENERICOBJS= $(GENDIR)\busyinfo.obj \
$(GENDIR)\calctrl.obj \
$(GENDIR)\choicdgg.obj \
+ $(GENDIR)\dcbuffer.obj \
$(GENDIR)\dcpsg.obj \
$(GENDIR)\dirctrlg.obj \
$(GENDIR)\dragimgg.obj \
GENERICOBJS= $(GENDIR)\$D\busyinfo.obj \
$(GENDIR)\$D\calctrl.obj \
$(GENDIR)\$D\choicdgg.obj \
+ $(GENDIR)\$D\dcbuffer.obj \
$(GENDIR)\$D\dcpsg.obj \
$(GENDIR)\$D\dirctrlg.obj \
$(GENDIR)\$D\dragimgg.obj \
GENERICOBJS= busyinfo.obj &
calctrl.obj &
choicdgg.obj &
+ dcbuffer.obj &
dcpsg.obj &
dirctrlg.obj &
dragimgg.obj &
choicdgg.obj: $(GENDIR)\choicdgg.cpp
*$(CCC) $(CPPFLAGS) $(IFLAGS) $<
+dcbuffer.obj: $(GENDIR)\dcbuffer.cpp
+ *$(CCC) $(CPPFLAGS) $(IFLAGS) $<
+
dcpsg.obj: $(GENDIR)\dcpsg.cpp
*$(CCC) $(CPPFLAGS) $(IFLAGS) $<
# End Source File
# Begin Source File
+SOURCE=.\generic\dcbuffer.cpp
+# End Source File
+# Begin Source File
+
SOURCE=.\generic\dcpsg.cpp
# End Source File
# Begin Source File
# End Source File
# Begin Source File
+SOURCE=..\include\wx\dcbuffer.h
+# End Source File
+# Begin Source File
+
SOURCE=..\include\wx\dcclient.h
# End Source File
# Begin Source File
# End Source File
# Begin Source File
+SOURCE=.\generic\dcbuffer.cpp
+# End Source File
+# Begin Source File
+
SOURCE=.\generic\dcpsg.cpp
# End Source File
# Begin Source File
# End Source File
# Begin Source File
+SOURCE=..\include\wx\dcbuffer.h
+# End Source File
+# Begin Source File
+
SOURCE=..\include\wx\dcclient.h
# End Source File
# Begin Source File
generic/caret.cpp \
generic/choicdgg.cpp \
generic/colrdlgg.cpp \
+ generic/dcbuffer.cpp \
generic/dcpsg.cpp \
generic/dirctrlg.cpp \
generic/dirdlgg.cpp \
dbkeyg.h \
dbtable.h \
dc.h \
+ dcbuffer.h \
dcclient.h \
dcmemory.h \
dcprint.h \
caret.o \
choicdgg.o \
colrdlgg.o \
+ dcbuffer.o \
dcpsg.o \
dirctrlg.o \
dirdlgg.o \