| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        dcbuffer.h
 
- // Purpose:     interface of wxBufferedDC
 
- // Author:      wxWidgets team
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- // Assumes the buffer bitmap covers the entire scrolled window,
 
- // and prepares the window DC accordingly
 
- #define wxBUFFER_VIRTUAL_AREA       0x01
 
- // Assumes the buffer bitmap only covers the client area;
 
- // does not prepare the window DC
 
- #define wxBUFFER_CLIENT_AREA        0x02
 
- // Set when not using specific buffer bitmap. Note that this
 
- // is private style and not returned by GetStyle.
 
- #define wxBUFFER_USES_SHARED_BUFFER 0x04
 
- /**
 
-     @class wxBufferedDC
 
-     This class provides a simple way to avoid flicker: when drawing on it,
 
-     everything is in fact first drawn on an in-memory buffer (a wxBitmap) and
 
-     then copied to the screen, using the associated wxDC, only once, when this
 
-     object is destroyed. wxBufferedDC itself is typically associated with
 
-     wxClientDC, if you want to use it in your @c EVT_PAINT handler, you should
 
-     look at wxBufferedPaintDC instead.
 
-     When used like this, a valid @e DC must be specified in the constructor
 
-     while the @e buffer bitmap doesn't have to be explicitly provided, by
 
-     default this class will allocate the bitmap of required size itself.
 
-     However using a dedicated bitmap can speed up the redrawing process by
 
-     eliminating the repeated creation and destruction of a possibly big bitmap.
 
-     Otherwise, wxBufferedDC can be used in the same way as any other device
 
-     context.
 
-     There is another possible use for wxBufferedDC is to use it to maintain a
 
-     backing store for the window contents. In this case, the associated @e DC
 
-     may be @NULL but a valid backing store bitmap should be specified.
 
-     Finally, please note that GTK+ 2.0 as well as OS X provide double buffering
 
-     themselves natively. You can either use wxWindow::IsDoubleBuffered() to
 
-     determine whether you need to use buffering or not, or use
 
-     wxAutoBufferedPaintDC to avoid needless double buffering on the systems
 
-     which already do it automatically.
 
-     @library{wxcore}
 
-     @category{dc}
 
-     @see wxDC, wxMemoryDC, wxBufferedPaintDC, wxAutoBufferedPaintDC
 
- */
 
- class wxBufferedDC : public wxMemoryDC
 
- {
 
- public:
 
-     /**
 
-         Default constructor. You must call one of the Init() methods later in
 
-         order to use the device context.
 
-     */
 
-     wxBufferedDC();
 
-     /**
 
-         Creates a buffer for the provided @a dc. Init() must not be called when
 
-         using this constructor.
 
-         @param dc
 
-             The underlying DC: everything drawn to this object will be flushed
 
-             to this DC when this object is destroyed. You may pass @NULL in
 
-             order to just initialize the buffer, and not flush it.
 
-         @param area
 
-             The size of the bitmap to be used for buffering (this bitmap is
 
-             created internally when it is not given explicitly).
 
-         @param style
 
-             wxBUFFER_CLIENT_AREA to indicate that just the client area of the
 
-             window is buffered, or wxBUFFER_VIRTUAL_AREA to indicate that the
 
-             buffer bitmap covers the virtual area.
 
-     */
 
-     wxBufferedDC(wxDC* dc, const wxSize& area,
 
-                  int style = wxBUFFER_CLIENT_AREA);
 
-     /**
 
-         Creates a buffer for the provided dc. Init() must not be called when
 
-         using this constructor.
 
-         @param dc
 
-             The underlying DC: everything drawn to this object will be flushed
 
-             to this DC when this object is destroyed. You may pass @NULL in
 
-             order to just initialize the buffer, and not flush it.
 
-         @param buffer
 
-             Explicitly provided bitmap to be used for buffering: this is the
 
-             most efficient solution as the bitmap doesn't have to be recreated
 
-             each time but it also requires more memory as the bitmap is never
 
-             freed. The bitmap should have appropriate size, anything drawn
 
-             outside of its bounds is clipped.
 
-         @param style
 
-             wxBUFFER_CLIENT_AREA to indicate that just the client area of the
 
-             window is buffered, or wxBUFFER_VIRTUAL_AREA to indicate that the
 
-             buffer bitmap covers the virtual area.
 
-     */
 
-     wxBufferedDC(wxDC* dc, wxBitmap& buffer = wxNullBitmap,
 
-                  int style = wxBUFFER_CLIENT_AREA);
 
-     /**
 
-         Copies everything drawn on the DC so far to the underlying DC
 
-         associated with this object, if any.
 
-     */
 
-     virtual ~wxBufferedDC();
 
-     //@{
 
-     /**
 
-         Initializes the object created using the default constructor. Please
 
-         see the constructors for parameter details.
 
-     */
 
-     void Init(wxDC* dc, const wxSize& area,
 
-               int style = wxBUFFER_CLIENT_AREA);
 
-     void Init(wxDC* dc, wxBitmap& buffer = wxNullBitmap,
 
-               int style = wxBUFFER_CLIENT_AREA);
 
-     //@}
 
-     /**
 
-        Blits the buffer to the dc, and detaches the dc from the buffer (so it
 
-        can be effectively used once only).
 
-     
 
-        Usually only called in the destructor or by the destructor 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();
 
-     /**
 
-        Set the style.
 
-     */
 
-     void SetStyle(int style);
 
-     /**
 
-        Get the style.
 
-     */
 
-     int GetStyle() const;
 
- };
 
- /**
 
-     @class wxAutoBufferedPaintDC
 
-     This wxDC derivative can be used inside of an @c EVT_PAINT() event handler
 
-     to achieve double-buffered drawing. Just use this class instead of
 
-     wxPaintDC and make sure wxWindow::SetBackgroundStyle() is called with
 
-     wxBG_STYLE_PAINT somewhere in the class initialization code, and that's
 
-     all you have to do to (mostly) avoid flicker.
 
-     The difference between wxBufferedPaintDC and this class is that this class
 
-     won't double-buffer on platforms which have native double-buffering
 
-     already, avoiding any unnecessary buffering to avoid flicker.
 
-     wxAutoBufferedPaintDC is simply a typedef of wxPaintDC on platforms that
 
-     have native double-buffering, otherwise, it is a typedef of
 
-     wxBufferedPaintDC.
 
-     @library{wxcore}
 
-     @category{dc}
 
-     @see wxDC, wxBufferedPaintDC, wxPaintDC
 
- */
 
- class wxAutoBufferedPaintDC : public wxBufferedPaintDC
 
- {
 
- public:
 
-     /**
 
-         Constructor. Pass a pointer to the window on which you wish to paint.
 
-     */
 
-     wxAutoBufferedPaintDC(wxWindow* window);
 
- };
 
- /**
 
-  * Check if the window is natively double buffered and will return a wxPaintDC
 
-  * if it is, a wxBufferedPaintDC otherwise.  It is the caller's responsibility
 
-  * to delete the wxDC pointer when finished with it.
 
-  */
 
- wxDC* wxAutoBufferedPaintDCFactory(wxWindow* window);
 
- /**
 
-     @class wxBufferedPaintDC
 
-     This is a subclass of wxBufferedDC which can be used inside of an
 
-     @c EVT_PAINT() event handler to achieve double-buffered drawing. Just use
 
-     this class instead of wxPaintDC and make sure
 
-     wxWindow::SetBackgroundStyle() is called with wxBG_STYLE_PAINT somewhere
 
-     in the class initialization code, and that's all you have to do to (mostly)
 
-     avoid flicker. The only thing to watch out for is that if you are using
 
-     this class together with wxScrolled, you probably do @b not want to call
 
-     wxScrolled::PrepareDC() on it as it already does this internally for the
 
-     real underlying wxPaintDC.
 
-     @library{wxcore}
 
-     @category{dc}
 
-     @see wxDC, wxBufferedDC, wxAutoBufferedPaintDC, wxPaintDC
 
- */
 
- class wxBufferedPaintDC : public wxBufferedDC
 
- {
 
- public:
 
-     //@{
 
-     /**
 
-         As with wxBufferedDC, you may either provide the bitmap to be used for
 
-         buffering or let this object create one internally (in the latter case,
 
-         the size of the client part of the window is used).
 
-         Pass wxBUFFER_CLIENT_AREA for the @a style parameter to indicate that
 
-         just the client area of the window is buffered, or
 
-         wxBUFFER_VIRTUAL_AREA to indicate that the buffer bitmap covers the
 
-         virtual area.
 
-     */
 
-     wxBufferedPaintDC(wxWindow* window, wxBitmap& buffer,
 
-                       int style = wxBUFFER_CLIENT_AREA);
 
-     wxBufferedPaintDC(wxWindow* window,
 
-                       int style = wxBUFFER_CLIENT_AREA);
 
-     //@}
 
-     /**
 
-         Copies everything drawn on the DC so far to the window associated with
 
-         this object, using a wxPaintDC.
 
-     */
 
-     virtual ~wxBufferedPaintDC();
 
- };
 
 
  |