gdiplus: Implement GdipGetVisibleClipBounds.
This commit is contained in:
parent
fdf48f1d4d
commit
ef0ee6e556
|
@ -400,7 +400,7 @@
|
||||||
@ stub GdipGetTextureImage
|
@ stub GdipGetTextureImage
|
||||||
@ stdcall GdipGetTextureTransform(ptr ptr)
|
@ stdcall GdipGetTextureTransform(ptr ptr)
|
||||||
@ stdcall GdipGetTextureWrapMode(ptr ptr)
|
@ stdcall GdipGetTextureWrapMode(ptr ptr)
|
||||||
@ stub GdipGetVisibleClipBounds
|
@ stdcall GdipGetVisibleClipBounds(ptr ptr)
|
||||||
@ stdcall GdipGetVisibleClipBoundsI(ptr ptr)
|
@ stdcall GdipGetVisibleClipBoundsI(ptr ptr)
|
||||||
@ stdcall GdipGetWorldTransform(ptr ptr)
|
@ stdcall GdipGetWorldTransform(ptr ptr)
|
||||||
@ stdcall GdipGraphicsClear(ptr long)
|
@ stdcall GdipGraphicsClear(ptr long)
|
||||||
|
|
|
@ -3124,6 +3124,64 @@ GpStatus WINGDIPAPI GdipGetTextRenderingHint(GpGraphics *graphics,
|
||||||
return Ok;
|
return Ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GpStatus WINGDIPAPI GdipGetVisibleClipBounds(GpGraphics *graphics, GpRectF *rect)
|
||||||
|
{
|
||||||
|
GpRegion *clip_rgn;
|
||||||
|
GpStatus stat;
|
||||||
|
GpRectF wnd_rect;
|
||||||
|
|
||||||
|
TRACE("(%p, %p)\n", graphics, rect);
|
||||||
|
|
||||||
|
if(!graphics || !rect)
|
||||||
|
return InvalidParameter;
|
||||||
|
|
||||||
|
if(graphics->busy)
|
||||||
|
return ObjectBusy;
|
||||||
|
|
||||||
|
/* get window bounds */
|
||||||
|
if((stat = get_graphics_bounds(graphics, &wnd_rect)) != Ok)
|
||||||
|
return stat;
|
||||||
|
|
||||||
|
/* intersect window and graphics clipping regions */
|
||||||
|
if((stat = GdipCreateRegion(&clip_rgn)) != Ok)
|
||||||
|
return stat;
|
||||||
|
|
||||||
|
if((stat = GdipCombineRegionRect(clip_rgn, &wnd_rect, CombineModeIntersect)) != Ok)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if((stat = GdipCombineRegionRegion(clip_rgn, graphics->clip, CombineModeIntersect)) != Ok)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
/* get bounds of the region */
|
||||||
|
stat = GdipGetRegionBounds(clip_rgn, graphics, rect);
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
GdipDeleteRegion(clip_rgn);
|
||||||
|
|
||||||
|
return stat;
|
||||||
|
}
|
||||||
|
|
||||||
|
GpStatus WINGDIPAPI GdipGetVisibleClipBoundsI(GpGraphics *graphics, GpRect *rect)
|
||||||
|
{
|
||||||
|
GpRectF rectf;
|
||||||
|
GpStatus stat;
|
||||||
|
|
||||||
|
TRACE("(%p, %p)\n", graphics, rect);
|
||||||
|
|
||||||
|
if(!graphics || !rect)
|
||||||
|
return InvalidParameter;
|
||||||
|
|
||||||
|
if((stat = GdipGetVisibleClipBounds(graphics, &rectf)) == Ok)
|
||||||
|
{
|
||||||
|
rect->X = roundr(rectf.X);
|
||||||
|
rect->Y = roundr(rectf.Y);
|
||||||
|
rect->Width = roundr(rectf.Width);
|
||||||
|
rect->Height = roundr(rectf.Height);
|
||||||
|
}
|
||||||
|
|
||||||
|
return stat;
|
||||||
|
}
|
||||||
|
|
||||||
GpStatus WINGDIPAPI GdipGetWorldTransform(GpGraphics *graphics, GpMatrix *matrix)
|
GpStatus WINGDIPAPI GdipGetWorldTransform(GpGraphics *graphics, GpMatrix *matrix)
|
||||||
{
|
{
|
||||||
TRACE("(%p, %p)\n", graphics, matrix);
|
TRACE("(%p, %p)\n", graphics, matrix);
|
||||||
|
@ -4085,15 +4143,6 @@ GpStatus WINGDIPAPI GdipMeasureDriverString(GpGraphics *graphics, GDIPCONST UINT
|
||||||
return NotImplemented;
|
return NotImplemented;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
* GdipGetVisibleClipBoundsI [GDIPLUS.@]
|
|
||||||
*/
|
|
||||||
GpStatus WINGDIPAPI GdipGetVisibleClipBoundsI(GpGraphics *graphics, GpRect *rect)
|
|
||||||
{
|
|
||||||
FIXME("(%p %p): stub\n", graphics, rect);
|
|
||||||
return NotImplemented;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* GdipDrawDriverString [GDIPLUS.@]
|
* GdipDrawDriverString [GDIPLUS.@]
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -227,6 +227,8 @@ GpStatus WINGDIPAPI GdipGetTextContrast(GpGraphics*,UINT*);
|
||||||
GpStatus WINGDIPAPI GdipGetTextRenderingHint(GpGraphics*,TextRenderingHint*);
|
GpStatus WINGDIPAPI GdipGetTextRenderingHint(GpGraphics*,TextRenderingHint*);
|
||||||
GpStatus WINGDIPAPI GdipGetWorldTransform(GpGraphics*,GpMatrix*);
|
GpStatus WINGDIPAPI GdipGetWorldTransform(GpGraphics*,GpMatrix*);
|
||||||
GpStatus WINGDIPAPI GdipGraphicsClear(GpGraphics*,ARGB);
|
GpStatus WINGDIPAPI GdipGraphicsClear(GpGraphics*,ARGB);
|
||||||
|
GpStatus WINGDIPAPI GdipGetVisibleClipBounds(GpGraphics*,GpRectF*);
|
||||||
|
GpStatus WINGDIPAPI GdipGetVisibleClipBoundsI(GpGraphics*,GpRect*);
|
||||||
GpStatus WINGDIPAPI GdipIsClipEmpty(GpGraphics*, BOOL*);
|
GpStatus WINGDIPAPI GdipIsClipEmpty(GpGraphics*, BOOL*);
|
||||||
GpStatus WINGDIPAPI GdipIsVisiblePoint(GpGraphics*,REAL,REAL,BOOL*);
|
GpStatus WINGDIPAPI GdipIsVisiblePoint(GpGraphics*,REAL,REAL,BOOL*);
|
||||||
GpStatus WINGDIPAPI GdipIsVisiblePointI(GpGraphics*,INT,INT,BOOL*);
|
GpStatus WINGDIPAPI GdipIsVisiblePointI(GpGraphics*,INT,INT,BOOL*);
|
||||||
|
|
Loading…
Reference in New Issue