Logo Search packages:      
Sourcecode: wxwindows2.4 version File versions


// Name:        antiflickpl.h
// Purpose:     Double-buffering plugin class for reducing flicker
// Author:      Aleksandras Gluchovas (@Lithuania)
// Modified by:
// Created:     23/10/98
// RCS-ID:      $Id: antiflickpl.h,v 2005/06/20 17:33:22 MR Exp $
// Copyright:   (c) Aleksandras Gluchovas
// Licence:     wxWindows licence

#ifndef __ANTIFLICKPL_G__
#define __ANTIFLICKPL_G__

#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 WXFL_DECLSPEC cbAntiflickerPlugin : public cbPluginBase
    DECLARE_DYNAMIC_CLASS( cbAntiflickerPlugin )

    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

        // 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();

        // Gets the client device context.

    wxDC& GetClientDC();

        // Default constructor.


        // Constructor taking frame layout panel, and pane mask.

    cbAntiflickerPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );

        // Destructor.

    virtual ~cbAntiflickerPlugin();

        // Handler for plugin event.

    void OnStartDrawInArea ( cbStartDrawInAreaEvent& event );

        // Handler for plugin event.

    void OnFinishDrawInArea( cbFinishDrawInAreaEvent& event );


#endif /* __ANTIFLICKPL_G__ */

Generated by  Doxygen 1.6.0   Back to index