Revision: 4459
http://tigervnc.svn.sourceforge.net/tigervnc/?rev=4459&view=rev
Author: ossman_
Date: 2011-06-01 09:31:53 +0000 (Wed, 01 Jun 2011)
Log Message:
-----------
Allow resize of the viewport widget.
Modified Paths:
--------------
trunk/vncviewer/Viewport.cxx
trunk/vncviewer/Viewport.h
Modified: trunk/vncviewer/Viewport.cxx
===================================================================
--- trunk/vncviewer/Viewport.cxx 2011-06-01 09:26:57 UTC (rev 4458)
+++ trunk/vncviewer/Viewport.cxx 2011-06-01 09:31:53 UTC (rev 4459)
@@ -196,6 +196,48 @@
}
+void Viewport::resize(int x, int y, int w, int h)
+{
+ rfb::ManagedPixelBuffer* newBuffer;
+ rfb::Rect rect;
+
+ // FIXME: Resize should probably be a feature of ManagedPixelBuffer
+
+ if ((w == frameBuffer->width()) && (h == frameBuffer->height()))
+ goto end;
+
+ newBuffer = new ManagedPixelBuffer(frameBuffer->getPF(), w, h);
+ assert(newBuffer);
+
+ rect.setXYWH(0, 0,
+ __rfbmin(newBuffer->width(), frameBuffer->width()),
+ __rfbmin(newBuffer->height(), frameBuffer->height()));
+ newBuffer->imageRect(rect, frameBuffer->data, frameBuffer->getStride());
+
+ // Black out any new areas
+
+ if (newBuffer->width() > frameBuffer->width()) {
+ rect.setXYWH(frameBuffer->width(), 0,
+ newBuffer->width() - frameBuffer->width(),
+ newBuffer->height());
+ newBuffer->fillRect(rect, 0);
+ }
+
+ if (newBuffer->height() > frameBuffer->height()) {
+ rect.setXYWH(0, frameBuffer->height(),
+ newBuffer->width(),
+ newBuffer->height() - frameBuffer->height());
+ newBuffer->fillRect(rect, 0);
+ }
+
+ delete frameBuffer;
+ frameBuffer = newBuffer;
+
+end:
+ Fl_Widget::resize(x, y, w, h);
+}
+
+
int Viewport::handle(int event)
{
char *buffer;
Modified: trunk/vncviewer/Viewport.h
===================================================================
--- trunk/vncviewer/Viewport.h 2011-06-01 09:26:57 UTC (rev 4458)
+++ trunk/vncviewer/Viewport.h 2011-06-01 09:31:53 UTC (rev 4459)
@@ -79,7 +79,11 @@
}
// Fl_Widget callback methods
+
void draw();
+
+ void resize(int x, int y, int w, int h);
+
int handle(int event);
private:
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Simplify data backup and recovery for your virtual environment with vRanger.
Installation's a snap, and flexible recovery options mean your data is safe,
secure and there when you need it. Data protection magic?
Nope - It's vRanger. Get your free trial download today.
http://p.sf.net/sfu/quest-sfdev2dev
_______________________________________________
Tigervnc-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tigervnc-commits