[Redbutton-devel] SF.net SVN: redbutton: [245] redbutton-browser/trunk
Brought to you by:
skilvington
|
From: <ski...@us...> - 2007-03-13 14:06:29
|
Revision: 245
http://svn.sourceforge.net/redbutton/?rev=245&view=rev
Author: skilvington
Date: 2007-03-13 07:06:18 -0700 (Tue, 13 Mar 2007)
Log Message:
-----------
draw MHEGCanvas objects
Modified Paths:
--------------
redbutton-browser/trunk/DynamicLineArtClass.c
redbutton-browser/trunk/MHEGDisplay.c
redbutton-browser/trunk/MHEGDisplay.h
Modified: redbutton-browser/trunk/DynamicLineArtClass.c
===================================================================
--- redbutton-browser/trunk/DynamicLineArtClass.c 2007-03-13 12:22:39 UTC (rev 244)
+++ redbutton-browser/trunk/DynamicLineArtClass.c 2007-03-13 14:06:18 UTC (rev 245)
@@ -546,6 +546,7 @@
{
XYPosition ins_pos;
OriginalBoxSize ins_box;
+ XYPosition src;
verbose("DynamicLineArtClass: %s; render", ExternalReference_name(&t->rootClass.inst.ref));
@@ -554,9 +555,12 @@
MHEGDisplay_setClipRectangle(d, &ins_pos, &ins_box);
-/* TODO */
-printf("TODO: DynamicLineArtClass_render\n");
+ /* work out where the intersection starts on the canvas */
+ src.x_position = ins_pos.x_position - t->inst.Position.x_position;
+ src.y_position = ins_pos.y_position - t->inst.Position.y_position;
+ MHEGDisplay_drawCanvas(d, &src, &ins_box, t->inst.canvas, &ins_pos);
+
MHEGDisplay_unsetClipRectangle(d);
return;
Modified: redbutton-browser/trunk/MHEGDisplay.c
===================================================================
--- redbutton-browser/trunk/MHEGDisplay.c 2007-03-13 12:22:39 UTC (rev 244)
+++ redbutton-browser/trunk/MHEGDisplay.c 2007-03-13 14:06:18 UTC (rev 245)
@@ -591,7 +591,34 @@
XRenderComposite(d->dpy, PictOpOver, bitmap->image_pic, None, d->next_overlay_pic,
src_x, src_y, src_x, src_y, dst_x, dst_y, w, h);
+ return;
+}
+/*
+ * coords should be in the range 0-MHEG_XRES, 0-MHEG_YRES
+ */
+
+void
+MHEGDisplay_drawCanvas(MHEGDisplay *d, XYPosition *src, OriginalBoxSize *box, MHEGCanvas *canvas, XYPosition *dst)
+{
+ int src_x, src_y;
+ int dst_x, dst_y;
+ unsigned int w, h;
+
+ /*
+ * scale up if fullscreen
+ * the canvas image itself is scaled when it is created
+ */
+ src_x = (src->x_position * d->xres) / MHEG_XRES;
+ src_y = (src->y_position * d->yres) / MHEG_YRES;
+ w = (box->x_length * d->xres) / MHEG_XRES;
+ h = (box->y_length * d->yres) / MHEG_YRES;
+ dst_x = (dst->x_position * d->xres) / MHEG_XRES;
+ dst_y = (dst->y_position * d->yres) / MHEG_YRES;
+
+ XRenderComposite(d->dpy, PictOpOver, canvas->contents_pic, None, d->next_overlay_pic,
+ src_x, src_y, src_x, src_y, dst_x, dst_y, w, h);
+
return;
}
Modified: redbutton-browser/trunk/MHEGDisplay.h
===================================================================
--- redbutton-browser/trunk/MHEGDisplay.h 2007-03-13 12:22:39 UTC (rev 244)
+++ redbutton-browser/trunk/MHEGDisplay.h 2007-03-13 14:06:18 UTC (rev 245)
@@ -72,6 +72,7 @@
void MHEGDisplay_fillTransparentRectangle(MHEGDisplay *, XYPosition *, OriginalBoxSize *);
void MHEGDisplay_fillRectangle(MHEGDisplay *, XYPosition *, OriginalBoxSize *, MHEGColour *);
void MHEGDisplay_drawBitmap(MHEGDisplay *, XYPosition *, OriginalBoxSize *, MHEGBitmap *, XYPosition *);
+void MHEGDisplay_drawCanvas(MHEGDisplay *, XYPosition *, OriginalBoxSize *, MHEGCanvas *, XYPosition *);
void MHEGDisplay_drawTextElement(MHEGDisplay *, XYPosition *, MHEGFont *, MHEGTextElement *, bool);
void MHEGDisplay_useOverlay(MHEGDisplay *);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|