/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: antiflickpl.h
+// Purpose: Double-buffering plugin class for reducing flicker
// Author: Aleksandras Gluchovas (@Lithuania)
// Modified by:
// Created: 23/10/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __ANTIFLICKPL_G__
#define __ANTIFLICKPL_G__
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "antiflickpl.h"
#endif
#include "wx/fl/controlbar.h"
-class cbAntiflickerPlugin : public cbPluginBase
+/*
+Implements double-buffering to reduce flicker.
+Bitmap and memory DC buffers are shared 'resources' among all instances of
+antiflicker plugins within the application.
+
+Locking for multithreaded applications is not yet implemented.
+*/
+
+class WXDLLIMPEXP_FL cbAntiflickerPlugin : public cbPluginBase
{
- DECLARE_DYNAMIC_CLASS( cbAntiflickerPlugin )
+ DECLARE_DYNAMIC_CLASS( cbAntiflickerPlugin )
protected:
- // double-buffers are shared "resource" among all instances of
- // antiflicker plugin within the application
- //
- // TODO:: locking should be implemented, for multithreaded GUIs
- static wxBitmap* mpVertBuf;
- static wxBitmap* mpHorizBuf;
- static wxMemoryDC* mpVertBufDc;
- static wxMemoryDC* mpHorizBufDc;
+ static wxBitmap* mpVertBuf;
+ static wxBitmap* mpHorizBuf;
+ static wxMemoryDC* mpVertBufDc;
+ static wxMemoryDC* mpHorizBufDc;
- static int mRefCount;
+ static int mRefCount;
- wxDC* mpLRUBufDc; // last-reacently-used buffer
- wxRect mLRUArea; // last-reacently-used area
+ wxDC* mpLRUBufDc; // last-recently-used buffer
+ wxRect mLRUArea; // last-recently-used area
protected:
- // returns NULL, if sutable buffer is not present
- wxDC* FindSuitableBuffer( const wxRect& forArea );
- wxDC* AllocNewBuffer( const wxRect& forArea );
- wxDC& GetWindowDC();
+ // Finds a suitable buffer. Returns NULL if a suitable buffer is not present.
+
+ wxDC* FindSuitableBuffer( const wxRect& forArea );
+
+ // Allocates a suitable buffer.
+
+ wxDC* AllocNewBuffer( const wxRect& forArea );
+
+ // Gets the window device context.
+
+ wxDC& GetWindowDC();
- wxDC& GetClientDC();
+ // Gets the client device context.
+
+ wxDC& GetClientDC();
public:
- cbAntiflickerPlugin(void);
+ // Default constructor.
+
+ cbAntiflickerPlugin(void);
+
+ // Constructor taking frame layout panel, and pane mask.
+
+ cbAntiflickerPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
+
+ // Destructor.
+
+ virtual ~cbAntiflickerPlugin();
- cbAntiflickerPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
+ // Handler for plugin event.
- virtual ~cbAntiflickerPlugin();
+ void OnStartDrawInArea ( cbStartDrawInAreaEvent& event );
- // handlers for plugin events
+ // Handler for plugin event.
- void OnStartDrawInArea ( cbStartDrawInAreaEvent& event );
- void OnFinishDrawInArea( cbFinishDrawInAreaEvent& event );
+ void OnFinishDrawInArea( cbFinishDrawInAreaEvent& event );
- DECLARE_EVENT_TABLE()
+ DECLARE_EVENT_TABLE()
};
#endif /* __ANTIFLICKPL_G__ */