qwt_paint_buffer.h 1.55 KB
Newer Older
pixhawk's avatar
pixhawk committed
1 2 3 4
/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
 * Qwt Widget Library
 * Copyright (C) 1997   Josef Wilgen
 * Copyright (C) 2002   Uwe Rathmann
5
 *
pixhawk's avatar
pixhawk committed
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the Qwt License, Version 1.0
 *****************************************************************************/

#ifndef QWT_PAINT_BUFFER_H
#define QWT_PAINT_BUFFER_H 1

#include <qglobal.h>
#if QT_VERSION < 0x040000

#include <qpixmap.h>
#include "qwt_global.h"

class QPainter;

/*!
  \brief Paint buffer for Qwt widgets

  QwtPaintBuffer offers a simple way to en/disable double buffering.
  Double buffering is enabled as default and in general there will be
26
  no reason to change this.
pixhawk's avatar
pixhawk committed
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
*/

class QWT_EXPORT QwtPaintBuffer
{
public:
    explicit QwtPaintBuffer();
    explicit QwtPaintBuffer(QPaintDevice *, const QRect &, QPainter *p = NULL);

    virtual ~QwtPaintBuffer();

    void open(QPaintDevice *, const QRect &, QPainter *p = NULL);
    void close();

    QPainter *painter();
    const QPaintDevice *device();
42

pixhawk's avatar
pixhawk committed
43 44 45 46
    static void setEnabled(bool enable);
    static bool isEnabled();

    //! Return Buffer used for double buffering
47 48 49
    const QPixmap &buffer() const {
        return d_pixBuffer;
    }
pixhawk's avatar
pixhawk committed
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

protected:
    void flush();

private:
    QPixmap d_pixBuffer;
    QRect d_rect;

    QPaintDevice *d_device; // use QGuardedPtr
    QPainter *d_painter; // use QGuardedPtr
    QPainter *d_devicePainter; // use QGuardedPtr

    static bool d_enabled;
};

#endif // QT_VERSION < 0x040000

#endif