[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdenonbeta/kcanvas
From:       Nikolas Zimmermann <wildfox () kde ! org>
Date:       2005-06-01 0:17:51
Message-ID: 1117585071.099976.14525.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 420407 by wildfox:

Bring back grabBuffer...


 M  +25 -0     KCanvasView.cc  
 M  +2 -1      KCanvasView.h  


--- trunk/kdenonbeta/kcanvas/KCanvasView.cc #420406:420407
@@ -386,6 +386,31 @@
 	invalidateCanvasRect(d->context->mapToVisual(rect));
 }
 
+KCanvasImageBuffer *KCanvasView::grabBuffer()
+{
+	KCanvasImageBuffer *ret = new KCanvasImageBuffer(true);
+	ret->resize(d->targetWidget->width(), d->targetWidget->height());
+
+	QColor color = backgroundColor();
+	ret->fill(qRgba(color.red(), color.green(), color.blue(), 0));
+	
+	KRenderingDeviceContext *imageContext = d->canvas->renderingDevice()->contextForImage(ret);
+	d->canvas->renderingDevice()->pushContext(imageContext);
+
+	imageContext->setCanvas(d->canvas);
+
+	// Invalidate the entire screen region
+	QRect full(0, 0, d->targetWidget->width(), d->targetWidget->height());
+	invalidateCanvasRect(full);
+
+	draw(full);
+	
+	d->canvas->renderingDevice()->popContext();
+	delete imageContext;
+
+	return ret;
+}
+
 void KCanvasView::clampAgainstTarget(const QRect &rect, int &x0, int &y0, int &x1, int &y1)
 {
 	int curWidth = d->targetWidget->width();
--- trunk/kdenonbeta/kcanvas/KCanvasView.h #420406:420407
@@ -29,6 +29,7 @@
 
 class KCanvas;
 class KCanvasItem;
+class KCanvasImageBuffer;
 class KCanvasView
 {
 public:
@@ -77,7 +78,7 @@
 	void invalidateCanvasItem(const KCanvasItem *item) const;
 
 	// Makes a pixel-wise 'screenshot' of the KCanvas.
-//	KCanvasImageBuffer *grabBuffer();
+	KCanvasImageBuffer *grabBuffer();
 
 private:
 	void clampAgainstTarget(const QRect &rect, int &x0, int &y0, int &x1, int &y1);
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic