wxWidgets/contrib/include/wx/fl/antiflickpl.h
2002-01-18 22:34:01 +00:00

71 lines
1.8 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// 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
/////////////////////////////////////////////////////////////////////////////
#ifndef __ANTIFLICKPL_G__
#define __ANTIFLICKPL_G__
#ifdef __GNUG__
#pragma interface "antiflickpl.h"
#endif
#include "wx/fl/controlbar.h"
/*
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 cbAntiflickerPlugin : public cbPluginBase
{
DECLARE_DYNAMIC_CLASS( cbAntiflickerPlugin )
protected:
static wxBitmap* mpVertBuf;
static wxBitmap* mpHorizBuf;
static wxMemoryDC* mpVertBufDc;
static wxMemoryDC* mpHorizBufDc;
static int mRefCount;
wxDC* mpLRUBufDc; // last-recently-used buffer
wxRect mLRUArea; // last-recently-used area
protected:
// 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 );
wxDC& GetWindowDC();
wxDC& GetClientDC();
public:
cbAntiflickerPlugin(void);
cbAntiflickerPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
virtual ~cbAntiflickerPlugin();
// Handler for plugin event.
void OnStartDrawInArea ( cbStartDrawInAreaEvent& event );
// Handler for plugin event.
void OnFinishDrawInArea( cbFinishDrawInAreaEvent& event );
DECLARE_EVENT_TABLE()
};
#endif /* __ANTIFLICKPL_G__ */