gdiplus: Implement accessors for graphics rendering origin.

This commit is contained in:
Vincent Povirk 2012-04-23 13:12:05 -05:00 committed by Alexandre Julliard
parent 3b4d278026
commit 075775a81b
2 changed files with 19 additions and 8 deletions

View File

@ -161,6 +161,7 @@ struct GpGraphics{
UINT textcontrast; /* not used yet. get/set only */ UINT textcontrast; /* not used yet. get/set only */
struct list containers; struct list containers;
GraphicsContainer contid; /* last-issued container ID */ GraphicsContainer contid; /* last-issued container ID */
INT origin_x, origin_y;
/* For giving the caller an HDC when we technically can't: */ /* For giving the caller an HDC when we technically can't: */
HBITMAP temp_hbitmap; HBITMAP temp_hbitmap;
int temp_hbitmap_width; int temp_hbitmap_width;

View File

@ -1976,6 +1976,7 @@ typedef struct _GraphicsContainerItem {
UINT textcontrast; UINT textcontrast;
GpMatrix* worldtrans; GpMatrix* worldtrans;
GpRegion* clip; GpRegion* clip;
INT origin_x, origin_y;
} GraphicsContainerItem; } GraphicsContainerItem;
static GpStatus init_container(GraphicsContainerItem** container, static GpStatus init_container(GraphicsContainerItem** container,
@ -1997,6 +1998,8 @@ static GpStatus init_container(GraphicsContainerItem** container,
(*container)->unit = graphics->unit; (*container)->unit = graphics->unit;
(*container)->textcontrast = graphics->textcontrast; (*container)->textcontrast = graphics->textcontrast;
(*container)->pixeloffset = graphics->pixeloffset; (*container)->pixeloffset = graphics->pixeloffset;
(*container)->origin_x = graphics->origin_x;
(*container)->origin_y = graphics->origin_y;
sts = GdipCloneMatrix(graphics->worldtrans, &(*container)->worldtrans); sts = GdipCloneMatrix(graphics->worldtrans, &(*container)->worldtrans);
if(sts != Ok){ if(sts != Ok){
@ -2055,6 +2058,8 @@ static GpStatus restore_container(GpGraphics* graphics,
graphics->unit = container->unit; graphics->unit = container->unit;
graphics->textcontrast = container->textcontrast; graphics->textcontrast = container->textcontrast;
graphics->pixeloffset = container->pixeloffset; graphics->pixeloffset = container->pixeloffset;
graphics->origin_x = container->origin_x;
graphics->origin_y = container->origin_y;
return Ok; return Ok;
} }
@ -5499,23 +5504,28 @@ GpStatus WINGDIPAPI GdipSetRenderingOrigin(GpGraphics *graphics, INT x, INT y)
TRACE("(%p,%i,%i)\n", graphics, x, y); TRACE("(%p,%i,%i)\n", graphics, x, y);
if (!(calls++)) if (!(calls++))
FIXME("not implemented\n"); FIXME("value is unused in rendering\n");
return NotImplemented; if (!graphics)
return InvalidParameter;
graphics->origin_x = x;
graphics->origin_y = y;
return Ok;
} }
GpStatus WINGDIPAPI GdipGetRenderingOrigin(GpGraphics *graphics, INT *x, INT *y) GpStatus WINGDIPAPI GdipGetRenderingOrigin(GpGraphics *graphics, INT *x, INT *y)
{ {
static int calls;
TRACE("(%p,%p,%p)\n", graphics, x, y); TRACE("(%p,%p,%p)\n", graphics, x, y);
if (!(calls++)) if (!graphics || !x || !y)
FIXME("not implemented\n"); return InvalidParameter;
*x = *y = 0; *x = graphics->origin_x;
*y = graphics->origin_y;
return NotImplemented; return Ok;
} }
GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics *graphics, SmoothingMode mode) GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics *graphics, SmoothingMode mode)