Qt 4.8
Classes | Public Functions | Properties | List of all members
QBBRasterWindowSurface Class Reference

#include <qbbrasterwindowsurface.h>

Inheritance diagram for QBBRasterWindowSurface:
QWindowSurface

Classes

class  ScrollOp
 

Public Functions

virtual void beginPaint (const QRegion &region)
 This function is called before painting onto the surface begins, with the region in which the painting will occur. More...
 
virtual void endPaint (const QRegion &region)
 This function is called after painting onto the surface has ended, with the region in which the painting was performed. More...
 
virtual void flush (QWidget *widget, const QRegion &region, const QPoint &offset)
 Flushes the given region from the specified widget onto the screen. More...
 
virtual QPixmap grabWidget (const QWidget *widget, const QRect &rectangle) const
 Returns a QPixmap generated from the part of the backing store corresponding to widget. More...
 
virtual QPaintDevicepaintDevice ()
 Implement this function to return the appropriate paint device. More...
 
 QBBRasterWindowSurface (QWidget *window)
 
virtual void resize (const QSize &size)
 
virtual bool scroll (const QRegion &area, int dx, int dy)
 Scrolls the given area dx pixels to the right and dy downward; both dx and dy may be negative. More...
 
virtual ~QBBRasterWindowSurface ()
 
- Public Functions inherited from QWindowSurface
virtual QImagebuffer (const QWidget *widget)
 Returns a QImage pointer which represents the actual buffer the widget is drawn into or 0 if this is unavailable. More...
 
virtual WindowSurfaceFeatures features () const
 
QRect geometry () const
 Returns the currently allocated area on the screen. More...
 
bool hasFeature (WindowSurfaceFeature feature) const
 
virtual QPoint offset (const QWidget *widget) const
 Returns the offset of widget in the coordinates of this window surface. More...
 
 QWindowSurface (QWidget *window, bool setDefaultSurface=true)
 Constructs an empty surface for the given top-level window. More...
 
QRect rect (const QWidget *widget) const
 Returns the rectangle for widget in the coordinates of this window surface. More...
 
virtual void setGeometry (const QRect &rect)
 Sets the currently allocated area to be the given rect. More...
 
void setStaticContents (const QRegion &region)
 
QRegion staticContents () const
 
QWidgetwindow () const
 Returns a pointer to the top-level window associated with this surface. More...
 
virtual ~QWindowSurface ()
 Destroys this surface. More...
 

Properties

QBBWindowmPlatformWindow
 
QList< ScrollOpmScrollOpList
 
bool mUseFrontBuffer
 

Additional Inherited Members

- Public Types inherited from QWindowSurface
enum  WindowSurfaceFeature { PartialUpdates = 0x00000001, PreservedContents = 0x00000002, StaticContents = 0x00000004, AllFeatures = 0xffffffff }
 
- Protected Functions inherited from QWindowSurface
bool hasStaticContents () const
 

Detailed Description

Definition at line 53 of file qbbrasterwindowsurface.h.

Constructors and Destructors

◆ QBBRasterWindowSurface()

QBBRasterWindowSurface::QBBRasterWindowSurface ( QWidget window)

Definition at line 55 of file qbbrasterwindowsurface.cpp.

56  : QWindowSurface(window),
57  mUseFrontBuffer(false)
58 {
59 #if defined(QBBRASTERWINDOWSURFACE_DEBUG)
60  qDebug() << "QBBRasterWindowSurface::QBBRasterWindowSurface - w=" << window;
61 #endif
62 
63  // save platform window associated with widget
64  mPlatformWindow = static_cast<QBBWindow*>(window->platformWindow());
65 }
Q_CORE_EXPORT void qDebug(const char *,...)
QWindowSurface(QWidget *window, bool setDefaultSurface=true)
Constructs an empty surface for the given top-level window.
QWidget * window() const
Returns a pointer to the top-level window associated with this surface.

◆ ~QBBRasterWindowSurface()

QBBRasterWindowSurface::~QBBRasterWindowSurface ( )
virtual

Definition at line 67 of file qbbrasterwindowsurface.cpp.

68 {
69 #if defined(QBBRASTERWINDOWSURFACE_DEBUG)
70  qDebug() << "QBBRasterWindowSurface::~QBBRasterWindowSurface - w=" << window();
71 #endif
72 }
Q_CORE_EXPORT void qDebug(const char *,...)
QWidget * window() const
Returns a pointer to the top-level window associated with this surface.

Functions

◆ beginPaint()

void QBBRasterWindowSurface::beginPaint ( const QRegion region)
virtual

This function is called before painting onto the surface begins, with the region in which the painting will occur.

See also
endPaint(), paintDevice()

Reimplemented from QWindowSurface.

Definition at line 153 of file qbbrasterwindowsurface.cpp.

154 {
155  Q_UNUSED(region);
156 
157 #if defined(QBBRASTERWINDOWSURFACE_DEBUG)
158  qDebug() << "QBBRasterWindowSurface::beginPaint - w=" << window();
159 #endif
160 
161  // resize window buffers if surface resized
162  QSize s = size();
163  if (s != mPlatformWindow->bufferSize()) {
165  }
166 }
void setBufferSize(const QSize &size)
Definition: qbbwindow.cpp:288
QSize bufferSize() const
Definition: qbbwindow.h:73
Q_CORE_EXPORT void qDebug(const char *,...)
The QSize class defines the size of a two-dimensional object using integer point precision.
Definition: qsize.h:53
#define Q_UNUSED(x)
Indicates to the compiler that the parameter with the specified name is not used in the body of a fun...
Definition: qglobal.h:1729
QWidget * window() const
Returns a pointer to the top-level window associated with this surface.

◆ endPaint()

void QBBRasterWindowSurface::endPaint ( const QRegion region)
virtual

This function is called after painting onto the surface has ended, with the region in which the painting was performed.

See also
beginPaint(), paintDevice()

Reimplemented from QWindowSurface.

Definition at line 168 of file qbbrasterwindowsurface.cpp.

169 {
170  Q_UNUSED(region);
171 #if defined(QBBRASTERWINDOWSURFACE_DEBUG)
172  qDebug() << "QBBRasterWindowSurface::endPaint - w=" << window();
173 #endif
174 }
Q_CORE_EXPORT void qDebug(const char *,...)
#define Q_UNUSED(x)
Indicates to the compiler that the parameter with the specified name is not used in the body of a fun...
Definition: qglobal.h:1729
QWidget * window() const
Returns a pointer to the top-level window associated with this surface.

◆ flush()

void QBBRasterWindowSurface::flush ( QWidget widget,
const QRegion region,
const QPoint offset 
)
virtual

Flushes the given region from the specified widget onto the screen.

Note that the offset parameter is currently unused.

Implements QWindowSurface.

Definition at line 83 of file qbbrasterwindowsurface.cpp.

84 {
85  Q_UNUSED(widget);
86  Q_UNUSED(offset);
87 
88 #if defined(QBBRASTERWINDOWSURFACE_DEBUG)
89  qDebug() << "QBBRasterWindowSurface::flush - w=" << window();
90 #endif
91 
92  // visit all pending scroll operations
93  for (int i = mScrollOpList.size() - 1; i >= 0; i--) {
94 
95  // do the scroll operation
96  ScrollOp& op = mScrollOpList[i];
97  QRegion srcArea = op.totalArea.intersected( op.totalArea.translated(-op.dx, -op.dy) );
98  mPlatformWindow->scroll(srcArea, op.dx, op.dy);
99  }
100 
101  // clear all pending scroll operations
102  mScrollOpList.clear();
103 
104  // update the display with newly rendered content
105  mPlatformWindow->post(region);
106 }
QRegion intersected(const QRegion &r) const
Returns a region which is the intersection of this region and r.
Definition: qregion.h:112
Q_CORE_EXPORT void qDebug(const char *,...)
void post(const QRegion &dirty)
Definition: qbbwindow.cpp:417
The QRegion class specifies a clip region for a painter.
Definition: qregion.h:68
void scroll(const QRegion &region, int dx, int dy, bool flush=false)
Definition: qbbwindow.cpp:411
QList< ScrollOp > mScrollOpList
#define Q_UNUSED(x)
Indicates to the compiler that the parameter with the specified name is not used in the body of a fun...
Definition: qglobal.h:1729
QWidget * window() const
Returns a pointer to the top-level window associated with this surface.

◆ grabWidget()

QPixmap QBBRasterWindowSurface::grabWidget ( const QWidget widget,
const QRect rectangle 
) const
virtual

Returns a QPixmap generated from the part of the backing store corresponding to widget.

Returns a null QPixmap if an error occurs. The contents of the pixmap are only defined for the regions of widget that have received paint events since the last resize of the backing store.

If rectangle is a null rectangle (the default), the entire widget is grabbed. Otherwise, the grabbed area is limited to rectangle.

The default implementation uses QWindowSurface::buffer().

See also
QPixmap::grabWidget()

Reimplemented from QWindowSurface.

Definition at line 176 of file qbbrasterwindowsurface.cpp.

177 {
178  // mUseFrontBuffer is used as a workaround to tell
179  // QBBRasterWindowSurface::paintDevice() to return the
180  // front buffer instead of the renderBuffer. grabWidget()
181  // is the only use case.
182  mUseFrontBuffer = true;
183 
184  QPixmap pixmap = QWindowSurface::grabWidget(widget, rectangle);
185 
186  mUseFrontBuffer = false;
187 
188  return pixmap;
189 }
virtual QPixmap grabWidget(const QWidget *widget, const QRect &rectangle=QRect()) const
Returns a QPixmap generated from the part of the backing store corresponding to widget.
The QPixmap class is an off-screen image representation that can be used as a paint device...
Definition: qpixmap.h:71

◆ paintDevice()

QPaintDevice * QBBRasterWindowSurface::paintDevice ( )
virtual

Implement this function to return the appropriate paint device.

Implements QWindowSurface.

Definition at line 74 of file qbbrasterwindowsurface.cpp.

75 {
79 
80  return 0;
81 }
bool hasBuffers() const
Definition: qbbwindow.h:74
QBBBuffer & renderBuffer()
Definition: qbbwindow.cpp:350
const QImage * image() const
Definition: qbbbuffer.h:60
QBBBuffer & frontBuffer()
Definition: qbbwindow.cpp:359

◆ resize()

void QBBRasterWindowSurface::resize ( const QSize size)
virtual

Definition at line 108 of file qbbrasterwindowsurface.cpp.

109 {
110 #if defined(QBBRASTERWINDOWSURFACE_DEBUG)
111  qDebug() << "QBBRasterWindowSurface::resize - w=" << window() << ", s=" << size;
112 #endif
113 
114  // call parent method
115  QWindowSurface::resize(size);
116 
117  // NOTE: defer resizing window buffers until next paint as
118  // resize() can be called multiple times before a paint occurs
119 }
Q_CORE_EXPORT void qDebug(const char *,...)
QWidget * window() const
Returns a pointer to the top-level window associated with this surface.

◆ scroll()

bool QBBRasterWindowSurface::scroll ( const QRegion area,
int  dx,
int  dy 
)
virtual

Scrolls the given area dx pixels to the right and dy downward; both dx and dy may be negative.

Returns true if the area was scrolled successfully; false otherwise.

Reimplemented from QWindowSurface.

Definition at line 121 of file qbbrasterwindowsurface.cpp.

122 {
123 #if defined(QBBRASTERWINDOWSURFACE_DEBUG)
124  qDebug() << "QBBRasterWindowSurface::scroll - w=" << window();
125 #endif
126 
127  // calculate entire region affected by scroll operation (src + dst)
128  QRegion totalArea = area.translated(dx, dy);
129  totalArea += area;
130 
131  // visit all pending scroll operations
132  for (int i = mScrollOpList.size() - 1; i >= 0; i--) {
133 
134  ScrollOp& op = mScrollOpList[i];
135  if (op.totalArea == totalArea) {
136  // same area is being scrolled again - update delta
137  op.dx += dx;
138  op.dy += dy;
139  return true;
140  } else if (op.totalArea.intersects(totalArea)) {
141  // current scroll overlaps previous scroll but is
142  // not equal in area - just paint everything
143  qWarning("QBB: pending scroll operations overlap but not equal");
144  return false;
145  }
146  }
147 
148  // create new scroll operation
149  mScrollOpList.append( ScrollOp(totalArea, dx, dy) );
150  return true;
151 }
Q_CORE_EXPORT void qDebug(const char *,...)
Q_CORE_EXPORT void qWarning(const char *,...)
The QRegion class specifies a clip region for a painter.
Definition: qregion.h:68
QList< ScrollOp > mScrollOpList
QRegion translated(int dx, int dy) const
Returns a copy of the region that is translated dx along the x axis and dy along the y axis...
Definition: qregion.cpp:743
QWidget * window() const
Returns a pointer to the top-level window associated with this surface.
static int area(const QSize &s)
Definition: qicon.cpp:155

Properties

◆ mPlatformWindow

QBBWindow* QBBRasterWindowSurface::mPlatformWindow
private

Definition at line 79 of file qbbrasterwindowsurface.h.

Referenced by beginPaint(), flush(), paintDevice(), and QBBRasterWindowSurface().

◆ mScrollOpList

QList<ScrollOp> QBBRasterWindowSurface::mScrollOpList
private

Definition at line 80 of file qbbrasterwindowsurface.h.

Referenced by flush(), and scroll().

◆ mUseFrontBuffer

bool QBBRasterWindowSurface::mUseFrontBuffer
mutableprivate

Definition at line 77 of file qbbrasterwindowsurface.h.

Referenced by grabWidget(), and paintDevice().


The documentation for this class was generated from the following files: