6 * This file is part of the w32api package.
8 * THIS SOFTWARE IS NOT COPYRIGHTED
10 * This source code is offered for use in the public domain. You may
11 * use, modify or distribute it freely.
13 * This code is distributed in the hope that it will be useful but
14 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
15 * DISCLAIMED. This includes but is not limited to warranties of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19 #ifndef _GDIPLUSHEADERS_H
20 #define _GDIPLUSHEADERS_H
22 class Image
: public GdiplusBase
25 friend class Graphics
;
27 Image(IStream
*stream
, BOOL useEmbeddedColorManagement
= FALSE
)
29 if (useEmbeddedColorManagement
)
30 status
= DllExports::GdipLoadImageFromStreamICM(stream
, &image
);
32 status
= DllExports::GdipLoadImageFromStream(stream
, &image
);
35 Image(const WCHAR
*filename
, BOOL useEmbeddedColorManagement
= FALSE
)
37 if (useEmbeddedColorManagement
)
38 status
= DllExports::GdipLoadImageFromFileICM(filename
, &image
);
40 status
= DllExports::GdipLoadImageFromFile(filename
, &image
);
45 Image
*newImage
= new Image();
46 SetStatus(DllExports::GdipCloneImage(image
, newImage
? &newImage
->image
: NULL
));
50 static Image
*FromFile(const WCHAR
*filename
, BOOL useEmbeddedColorManagement
= FALSE
)
52 return new Image(filename
, useEmbeddedColorManagement
);
55 static Image
*FromStream(IStream
*stream
, BOOL useEmbeddedColorManagement
= FALSE
)
57 return new Image(stream
, useEmbeddedColorManagement
);
60 Status
GetAllPropertyItems(UINT totalBufferSize
, UINT numProperties
, PropertyItem
*allItems
)
62 return SetStatus(DllExports::GdipGetAllPropertyItems(image
, totalBufferSize
, numProperties
, allItems
));
65 Status
GetBounds(RectF
*srcRect
, Unit
*srcUnit
)
67 return SetStatus(DllExports::GdipGetImageBounds(image
, srcRect
, srcUnit
));
70 Status
GetEncoderParameterList(const CLSID
*clsidEncoder
, UINT size
, EncoderParameters
*buffer
)
72 return NotImplemented
; // FIXME: not available: SetStatus(DllExports::GdipGetEncoderParameterList(image, clsidEncoder, size, buffer));
75 UINT
GetEncoderParameterListSize(const CLSID
*clsidEncoder
)
77 return 0; // FIXME: not available:
79 // SetStatus(DllExports::GdipGetEncoderParameterListSize(image, clsidEncoder, &size));
86 SetStatus(DllExports::GdipGetImageFlags(image
, &flags
));
90 UINT
GetFrameCount(const GUID
*dimensionID
)
93 SetStatus(DllExports::GdipImageGetFrameCount(image
, dimensionID
, &count
));
97 UINT
GetFrameDimensionsCount(VOID
)
100 SetStatus(DllExports::GdipImageGetFrameDimensionsCount(image
, &count
));
104 Status
GetFrameDimensionsList(GUID
*dimensionIDs
, UINT count
)
106 return SetStatus(DllExports::GdipImageGetFrameDimensionsList(image
, dimensionIDs
, count
));
112 SetStatus(DllExports::GdipGetImageHeight(image
, &height
));
116 REAL
GetHorizontalResolution(VOID
)
119 SetStatus(DllExports::GdipGetImageHorizontalResolution(image
, &resolution
));
123 Status
GetLastStatus(VOID
)
128 Status
GetPalette(ColorPalette
*palette
, INT size
)
130 return SetStatus(DllExports::GdipGetImagePalette(image
, palette
, size
));
133 INT
GetPaletteSize(VOID
)
136 SetStatus(DllExports::GdipGetImagePaletteSize(image
, &size
));
140 Status
GetPhysicalDimension(SizeF
*size
)
142 return SetStatus(DllExports::GdipGetImageDimension(image
, size
? &size
->Width
: NULL
, size
? &size
->Height
: NULL
));
145 PixelFormat
GetPixelFormat(VOID
)
148 SetStatus(DllExports::GdipGetImagePixelFormat(image
, &format
));
152 UINT
GetPropertyCount(VOID
)
155 SetStatus(DllExports::GdipGetPropertyCount(image
, &numOfProperty
));
156 return numOfProperty
;
159 Status
GetPropertyIdList(UINT numOfProperty
, PROPID
*list
)
161 return SetStatus(DllExports::GdipGetPropertyIdList(image
, numOfProperty
, list
));
164 Status
GetPropertyItem(PROPID propId
, UINT propSize
, PropertyItem
*buffer
)
166 return SetStatus(DllExports::GdipGetPropertyItem(image
, propId
, propSize
, buffer
));
169 UINT
GetPropertyItemSize(PROPID propId
)
172 SetStatus(DllExports::GdipGetPropertyItemSize(image
, propId
, &size
));
176 Status
GetPropertySize(UINT
*totalBufferSize
, UINT
*numProperties
)
178 return SetStatus(DllExports::GdipGetPropertySize(image
, totalBufferSize
, numProperties
));
181 Status
GetRawFormat(GUID
*format
)
183 return SetStatus(DllExports::GdipGetImageRawFormat(image
, format
));
186 Image
*GetThumbnailImage(UINT thumbWidth
, UINT thumbHeight
, GetThumbnailImageAbort callback
, VOID
*callbackData
)
188 Image
*thumbImage
= new Image();
189 SetStatus(DllExports::GdipGetImageThumbnail(image
, thumbWidth
, thumbHeight
, thumbImage
? &thumbImage
->image
: NULL
, callback
, callbackData
));
193 ImageType
GetType(VOID
)
196 SetStatus(DllExports::GdipGetImageType(image
, &type
));
200 REAL
GetVerticalResolution(VOID
)
203 SetStatus(DllExports::GdipGetImageVerticalResolution(image
, &resolution
));
210 SetStatus(DllExports::GdipGetImageWidth(image
, &width
));
214 Status
RemovePropertyItem(PROPID propId
)
216 return SetStatus(DllExports::GdipRemovePropertyItem(image
, propId
));
219 Status
RotateFlip(RotateFlipType rotateFlipType
)
221 return SetStatus(DllExports::GdipImageRotateFlip(image
, rotateFlipType
));
224 Status
Save(IStream
*stream
, const CLSID
*clsidEncoder
, const EncoderParameters
*encoderParams
)
226 return SetStatus(DllExports::GdipSaveImageToStream(image
, stream
, clsidEncoder
, encoderParams
));
229 Status
Save(const WCHAR
*filename
, const CLSID
*clsidEncoder
, const EncoderParameters
*encoderParams
)
231 return SetStatus(DllExports::GdipSaveImageToFile(image
, filename
, clsidEncoder
, encoderParams
));
234 Status
SaveAdd(const EncoderParameters
* encoderParams
)
236 return NotImplemented
; // FIXME: not available: SetStatus(DllExports::GdipSaveAdd(image, encoderParams));
239 Status
SaveAdd(Image
*newImage
, const EncoderParameters
*encoderParams
)
241 return NotImplemented
; // FIXME: not available: SetStatus(DllExports::GdipSaveAddImage(image, newImage ? newImage->image : NULL, encoderParams));
244 Status
SelectActiveFrame(const GUID
*dimensionID
, UINT frameIndex
)
246 return SetStatus(DllExports::GdipImageSelectActiveFrame(image
, dimensionID
, frameIndex
));
249 Status
SetPalette(const ColorPalette
* palette
)
251 return SetStatus(DllExports::GdipSetImagePalette(image
, palette
));
254 Status
SetPropertyItem(const PropertyItem
* item
)
256 return SetStatus(DllExports::GdipSetPropertyItem(image
, item
));
265 mutable Status status
;
268 Status
SetStatus(Status status
) const
272 this->status
= status
;
278 class Bitmap
: public Image
280 friend class CachedBitmap
;
283 // Bitmap(IDirectDrawSurface7 *surface) // <-- FIXME: compiler does not like this
285 // status = DllExports::GdipCreateBitmapFromDirectDrawSurface(surface, &bitmap);
288 Bitmap(INT width
, INT height
, Graphics
*target
)
290 status
= DllExports::GdipCreateBitmapFromGraphics(width
, height
, target
? target
->graphics
: NULL
, &bitmap
);
293 Bitmap(const BITMAPINFO
*gdiBitmapInfo
, VOID
*gdiBitmapData
)
295 status
= DllExports::GdipCreateBitmapFromGdiDib(gdiBitmapInfo
, gdiBitmapData
, &bitmap
);
298 Bitmap(INT width
, INT height
, PixelFormat format
)
302 Bitmap(HBITMAP hbm
, HPALETTE hpal
)
304 status
= DllExports::GdipCreateBitmapFromHBITMAP(hbm
, hpal
, &bitmap
);
307 Bitmap(INT width
, INT height
, INT stride
, PixelFormat format
, BYTE
*scan0
)
309 status
= DllExports::GdipCreateBitmapFromScan0(width
, height
, stride
, format
, scan0
, &bitmap
);
312 Bitmap(const WCHAR
*filename
, BOOL useIcm
)
315 status
= DllExports::GdipCreateBitmapFromFileICM(filename
, &bitmap
);
317 status
= DllExports::GdipCreateBitmapFromFile(filename
, &bitmap
);
320 Bitmap(HINSTANCE hInstance
, const WCHAR
*bitmapName
)
322 status
= DllExports::GdipCreateBitmapFromResource(hInstance
, bitmapName
, &bitmap
);
327 status
= DllExports::GdipCreateBitmapFromHICON(hicon
, &bitmap
);
330 Bitmap(IStream
*stream
, BOOL useIcm
)
333 status
= DllExports::GdipCreateBitmapFromStreamICM(stream
, &bitmap
);
335 status
= DllExports::GdipCreateBitmapFromStream(stream
, &bitmap
);
338 Bitmap
*Clone(const Rect
&rect
, PixelFormat format
)
340 Bitmap
*dstBitmap
= new Bitmap();
341 SetStatus(DllExports::GdipCloneBitmapAreaI(rect
.X
, rect
.Y
, rect
.Width
, rect
.Height
, format
, bitmap
, dstBitmap
? &dstBitmap
->bitmap
: NULL
));
345 Bitmap
*Clone(const RectF
&rect
, PixelFormat format
)
347 Bitmap
*dstBitmap
= new Bitmap();
348 SetStatus(DllExports::GdipCloneBitmapArea(rect
.X
, rect
.Y
, rect
.Width
, rect
.Height
, format
, bitmap
, dstBitmap
? &dstBitmap
->bitmap
: NULL
));
352 Bitmap
*Clone(REAL x
, REAL y
, REAL width
, REAL height
, PixelFormat format
)
354 Bitmap
*dstBitmap
= new Bitmap();
355 SetStatus(DllExports::GdipCloneBitmapArea(x
, y
, width
, height
, format
, bitmap
, dstBitmap
? &dstBitmap
->bitmap
: NULL
));
359 Bitmap
*Clone(INT x
, INT y
, INT width
, INT height
, PixelFormat format
)
361 Bitmap
*dstBitmap
= new Bitmap();
362 SetStatus(DllExports::GdipCloneBitmapAreaI(x
, y
, width
, height
, format
, bitmap
, dstBitmap
? &dstBitmap
->bitmap
: NULL
));
366 static Bitmap
*FromBITMAPINFO(const BITMAPINFO
*gdiBitmapInfo
, VOID
*gdiBitmapData
)
368 return new Bitmap(gdiBitmapInfo
, gdiBitmapData
);
371 // static Bitmap *FromDirectDrawSurface7(IDirectDrawSurface7 *surface) // <-- FIXME: compiler does not like this
373 // return new Bitmap(surface);
376 static Bitmap
*FromFile(const WCHAR
*filename
, BOOL useEmbeddedColorManagement
)
378 return new Bitmap(filename
, useEmbeddedColorManagement
);
381 static Bitmap
*FromHBITMAP(HBITMAP hbm
, HPALETTE hpal
)
383 return new Bitmap(hbm
, hpal
);
386 static Bitmap
*FromHICON(HICON hicon
)
388 return new Bitmap(hicon
);
391 static Bitmap
*FromResource(HINSTANCE hInstance
, const WCHAR
*bitmapName
)
393 return new Bitmap(hInstance
, bitmapName
);
396 static Bitmap
*FromStream(IStream
*stream
, BOOL useEmbeddedColorManagement
)
398 return new Bitmap(stream
, useEmbeddedColorManagement
);
401 Status
GetHBITMAP(const Color
&colorBackground
, HBITMAP
*hbmReturn
)
403 return SetStatus(DllExports::GdipCreateHBITMAPFromBitmap(bitmap
, hbmReturn
, colorBackground
.GetValue()));
406 Status
GetHICON(HICON
*hicon
)
408 return SetStatus(DllExports::GdipCreateHICONFromBitmap(bitmap
, hicon
));
411 Status
GetPixel(INT x
, INT y
, Color
*color
)
414 Status s
= SetStatus(DllExports::GdipBitmapGetPixel(bitmap
, x
, y
, &argb
));
416 color
->SetValue(argb
);
420 Status
LockBits(const Rect
*rect
, UINT flags
, PixelFormat format
, BitmapData
*lockedBitmapData
)
422 return SetStatus(DllExports::GdipBitmapLockBits(bitmap
, rect
, flags
, format
, lockedBitmapData
));
425 Status
SetPixel(INT x
, INT y
, const Color
&color
)
427 return SetStatus(DllExports::GdipBitmapSetPixel(bitmap
, x
, y
, color
.GetValue()));
430 Status
SetResolution(REAL xdpi
, REAL ydpi
)
432 return SetStatus(DllExports::GdipBitmapSetResolution(bitmap
, xdpi
, ydpi
));
435 Status
UnlockBits(BitmapData
*lockedBitmapData
)
437 return SetStatus(DllExports::GdipBitmapUnlockBits(bitmap
, lockedBitmapData
));
446 mutable Status status
;
449 Status
SetStatus(Status status
) const
453 this->status
= status
;
459 class CachedBitmap
: public GdiplusBase
462 CachedBitmap(Bitmap
*bitmap
, Graphics
*graphics
)
464 status
= DllExports::GdipCreateCachedBitmap(bitmap
->bitmap
, graphics
? graphics
->graphics
: NULL
, &cachedBitmap
);
467 Status
GetLastStatus(VOID
)
473 mutable Status status
;
474 GpCachedBitmap
*cachedBitmap
;
478 class FontCollection
: public GdiplusBase
480 friend class FontFamily
;
487 Status
GetFamilies(INT numSought
, FontFamily
*gpfamilies
, INT
*numFound
) const
489 return NotImplemented
;
492 INT
GetFamilyCount(VOID
) const
497 Status
GetLastStatus(VOID
)
499 return NotImplemented
;
503 GpFontCollection
*fontCollection
;
507 class FontFamily
: public GdiplusBase
516 FontFamily(const WCHAR
*name
, const FontCollection
*fontCollection
)
518 status
= DllExports::GdipCreateFontFamilyFromName(name
, fontCollection
? fontCollection
->fontCollection
: NULL
, &fontFamily
);
521 FontFamily
*Clone(VOID
)
526 static const FontFamily
*GenericMonospace(VOID
)
528 FontFamily
*genericMonospace
= new FontFamily();
529 genericMonospace
->status
= DllExports::GdipGetGenericFontFamilyMonospace(genericMonospace
? &genericMonospace
->fontFamily
: NULL
);
530 return genericMonospace
;
533 static const FontFamily
*GenericSansSerif(VOID
)
535 FontFamily
*genericSansSerif
= new FontFamily();
536 genericSansSerif
->status
= DllExports::GdipGetGenericFontFamilySansSerif(genericSansSerif
? &genericSansSerif
->fontFamily
: NULL
);
537 return genericSansSerif
;
540 static const FontFamily
*GenericSerif(VOID
)
542 FontFamily
*genericSerif
= new FontFamily();
543 genericSerif
->status
= DllExports::GdipGetGenericFontFamilyMonospace(genericSerif
? &genericSerif
->fontFamily
: NULL
);
547 UINT16
GetCellAscent(INT style
) const
550 SetStatus(DllExports::GdipGetCellAscent(fontFamily
, style
, &CellAscent
));
554 UINT16
GetCellDescent(INT style
) const
557 SetStatus(DllExports::GdipGetCellDescent(fontFamily
, style
, &CellDescent
));
561 UINT16
GetEmHeight(INT style
)
564 SetStatus(DllExports::GdipGetEmHeight(fontFamily
, style
, &EmHeight
));
568 Status
GetFamilyName(WCHAR name
[LF_FACESIZE
], WCHAR language
) const
570 return SetStatus(DllExports::GdipGetFamilyName(fontFamily
, name
, language
));
573 Status
GetLastStatus(VOID
) const
578 UINT16
GetLineSpacing(INT style
) const
581 SetStatus(DllExports::GdipGetLineSpacing(fontFamily
, style
, &LineSpacing
));
585 BOOL
IsAvailable(VOID
) const
590 BOOL
IsStyleAvailable(INT style
) const
593 SetStatus(DllExports::GdipIsStyleAvailable(fontFamily
, style
, &StyleAvailable
));
594 return StyleAvailable
;
598 mutable Status status
;
599 GpFontFamily
*fontFamily
;
601 Status
SetStatus(Status status
) const
605 this->status
= status
;
611 class InstalledFontFamily
: public FontFamily
614 InstalledFontFamily(VOID
)
620 class PrivateFontCollection
: public FontCollection
623 PrivateFontCollection(VOID
)
627 Status
AddFontFile(const WCHAR
* filename
)
629 return NotImplemented
;
632 Status
AddMemoryFont(const VOID
*memory
, INT length
)
634 return NotImplemented
;
639 class Font
: public GdiplusBase
642 friend class FontFamily
;
643 friend class FontCollection
;
644 friend class Graphics
;
646 Font(const FontFamily
*family
, REAL emSize
, INT style
, Unit unit
)
648 status
= DllExports::GdipCreateFont(family
->fontFamily
, emSize
, style
, unit
, &font
);
651 Font(HDC hdc
, const HFONT hfont
)
655 Font(HDC hdc
, const LOGFONTA
*logfont
)
657 status
= DllExports::GdipCreateFontFromLogfontA(hdc
, logfont
, &font
);
660 Font(HDC hdc
, const LOGFONTW
*logfont
)
662 status
= DllExports::GdipCreateFontFromLogfontW(hdc
, logfont
, &font
);
665 Font(const WCHAR
*familyName
, REAL emSize
, INT style
, Unit unit
, const FontCollection
*fontCollection
)
671 status
= DllExports::GdipCreateFontFromDC(hdc
, &font
);
674 Font
*Clone(VOID
) const
676 Font
*cloneFont
= new Font();
677 cloneFont
->status
= DllExports::GdipCloneFont(font
, cloneFont
? &cloneFont
->font
: NULL
);
681 Status
GetFamily(FontFamily
* family
) const
683 return SetStatus(DllExports::GdipGetFamily(font
, family
? &family
->fontFamily
: NULL
));
686 REAL
GetHeight(const Graphics
* graphics
) const
689 SetStatus(DllExports::GdipGetFontHeight(font
, graphics
? graphics
->graphics
: NULL
, &height
));
693 REAL
GetHeight(REAL dpi
) const
696 SetStatus(DllExports::GdipGetFontHeightGivenDPI(font
, dpi
, &height
));
700 Status
GetLastStatus(VOID
) const
705 Status
GetLogFontA(const Graphics
*g
, LOGFONTA
*logfontA
) const
707 return SetStatus(DllExports::GdipGetLogFontA(font
, g
? g
->graphics
: NULL
, logfontA
));
710 Status
GetLogFontW(const Graphics
*g
, LOGFONTW
*logfontW
) const
712 return SetStatus(DllExports::GdipGetLogFontW(font
, g
? g
->graphics
: NULL
, logfontW
));
715 REAL
GetSize(VOID
) const
718 SetStatus(DllExports::GdipGetFontSize(font
, &size
));
722 INT
GetStyle(VOID
) const
725 SetStatus(DllExports::GdipGetFontStyle(font
, &style
));
729 Unit
GetUnit(VOID
) const
732 SetStatus(DllExports::GdipGetFontUnit(font
, &unit
));
736 BOOL
IsAvailable(VOID
) const
747 mutable Status status
;
750 Status
SetStatus(Status status
) const
754 this->status
= status
;
760 class Region
: public GdiplusBase
763 friend class Graphics
;
764 friend class GraphicsPath
;
767 Region(const Rect
&rect
)
769 status
= DllExports::GdipCreateRegionRectI(&rect
, ®ion
);
774 status
= DllExports::GdipCreateRegion(®ion
);
777 Region(const BYTE
*regionData
, INT size
)
779 status
= DllExports::GdipCreateRegionRgnData(regionData
, size
, ®ion
);
782 Region(const GraphicsPath
*path
)
784 status
= DllExports::GdipCreateRegionPath(path
->path
, ®ion
);
789 status
= DllExports::GdipCreateRegionHrgn(hRgn
, ®ion
);
792 Region(const RectF
&rect
)
794 status
= DllExports::GdipCreateRegionRect(&rect
, ®ion
);
799 Region
*cloneRegion
= new Region();
800 cloneRegion
->status
= DllExports::GdipCloneRegion(region
, cloneRegion
? &cloneRegion
->region
: NULL
);
804 Status
Complement(const GraphicsPath
*path
)
806 return SetStatus(DllExports::GdipCombineRegionPath(region
, path
? path
->path
: NULL
, CombineModeComplement
));
809 Status
Complement(const Region
*region
)
811 return SetStatus(DllExports::GdipCombineRegionRegion(this->region
, region
? region
->region
: NULL
, CombineModeComplement
));
814 Status
Complement(const Rect
&rect
)
816 return SetStatus(DllExports::GdipCombineRegionRectI(region
, &rect
, CombineModeComplement
));
819 Status
Complement(const RectF
&rect
)
821 return SetStatus(DllExports::GdipCombineRegionRect(region
, &rect
, CombineModeComplement
));
824 BOOL
Equals(const Region
*region
, const Graphics
*g
) const
827 SetStatus(DllExports::GdipIsEqualRegion(this->region
, region
? region
->region
: NULL
, g
? g
->graphics
: NULL
, &result
));
831 Status
Exclude(const GraphicsPath
*path
)
833 return SetStatus(DllExports::GdipCombineRegionPath(region
, path
? path
->path
: NULL
, CombineModeExclude
));
836 Status
Exclude(const RectF
&rect
)
838 return SetStatus(DllExports::GdipCombineRegionRect(region
, &rect
, CombineModeExclude
));
841 Status
Exclude(const Rect
&rect
)
843 return SetStatus(DllExports::GdipCombineRegionRectI(region
, &rect
, CombineModeExclude
));
846 Status
Exclude(const Region
*region
)
848 return SetStatus(DllExports::GdipCombineRegionRegion(this->region
, region
? region
->region
: NULL
, CombineModeExclude
));
851 static Region
*FromHRGN(HRGN hRgn
)
853 return new Region(hRgn
);
856 Status
GetBounds(Rect
*rect
, const Graphics
*g
) const
858 return SetStatus(DllExports::GdipGetRegionBoundsI(region
, g
? g
->graphics
: NULL
, rect
));
861 Status
GetBounds(RectF
*rect
, const Graphics
*g
) const
863 return SetStatus(DllExports::GdipGetRegionBounds(region
, g
? g
->graphics
: NULL
, rect
));
866 Status
GetData(BYTE
*buffer
, UINT bufferSize
, UINT
*sizeFilled
) const
868 return SetStatus(DllExports::GdipGetRegionData(region
, buffer
, bufferSize
, sizeFilled
));
871 UINT
GetDataSize(VOID
) const
874 SetStatus(DllExports::GdipGetRegionDataSize(region
, &bufferSize
));
878 HRGN
GetHRGN(const Graphics
*g
) const
881 SetStatus(DllExports::GdipGetRegionHRgn(region
, g
? g
->graphics
: NULL
, &hRgn
));
885 Status
GetLastStatus(VOID
)
890 Status
GetRegionScans(const Matrix
*matrix
, Rect
*rects
, INT
*count
) const
892 return SetStatus(DllExports::GdipGetRegionScansI(region
, rects
, count
, matrix
? matrix
->matrix
: NULL
));
895 Status
GetRegionScans(const Matrix
*matrix
, RectF
*rects
, INT
*count
) const
897 return SetStatus(DllExports::GdipGetRegionScans(region
, rects
, count
, matrix
? matrix
->matrix
: NULL
));
900 UINT
GetRegionScansCount(const Matrix
*matrix
) const
903 SetStatus(DllExports::GdipGetRegionScansCount(region
, &count
, matrix
? matrix
->matrix
: NULL
));
907 Status
Intersect(const Rect
&rect
)
909 return SetStatus(DllExports::GdipCombineRegionRectI(region
, &rect
, CombineModeIntersect
));
912 Status
Intersect(const GraphicsPath
*path
)
914 return SetStatus(DllExports::GdipCombineRegionPath(region
, path
? path
->path
: NULL
, CombineModeIntersect
));
917 Status
Intersect(const RectF
&rect
)
919 return SetStatus(DllExports::GdipCombineRegionRect(region
, &rect
, CombineModeIntersect
));
922 Status
Intersect(const Region
*region
)
924 return SetStatus(DllExports::GdipCombineRegionRegion(this->region
, region
? region
->region
: NULL
, CombineModeIntersect
));
927 BOOL
IsEmpty(const Graphics
*g
) const
930 SetStatus(DllExports::GdipIsEmptyRegion(region
, g
? g
->graphics
: NULL
, &result
));
934 BOOL
IsInfinite(const Graphics
*g
) const
937 SetStatus(DllExports::GdipIsInfiniteRegion(region
, g
? g
->graphics
: NULL
, &result
));
941 BOOL
IsVisible(const PointF
&point
, const Graphics
*g
) const
944 SetStatus(DllExports::GdipIsVisibleRegionPoint(region
, point
.X
, point
.Y
, g
? g
->graphics
: NULL
, &result
));
948 BOOL
IsVisible(const RectF
&rect
, const Graphics
*g
) const
951 SetStatus(DllExports::GdipIsVisibleRegionRect(region
, rect
.X
, rect
.Y
, rect
.Width
, rect
.Height
, g
? g
->graphics
: NULL
, &result
));
955 BOOL
IsVisible(const Rect
&rect
, const Graphics
*g
) const
958 SetStatus(DllExports::GdipIsVisibleRegionRectI(region
, rect
.X
, rect
.Y
, rect
.Width
, rect
.Height
, g
? g
->graphics
: NULL
, &result
));
962 BOOL
IsVisible(INT x
, INT y
, const Graphics
*g
) const
965 SetStatus(DllExports::GdipIsVisibleRegionPointI(region
, x
, y
, g
? g
->graphics
: NULL
, &result
));
969 BOOL
IsVisible(REAL x
, REAL y
, const Graphics
*g
) const
972 SetStatus(DllExports::GdipIsVisibleRegionPoint(region
, x
, y
, g
? g
->graphics
: NULL
, &result
));
976 BOOL
IsVisible(INT x
, INT y
, INT width
, INT height
, const Graphics
*g
) const
979 SetStatus(DllExports::GdipIsVisibleRegionRectI(region
, x
, y
, width
, height
, g
? g
->graphics
: NULL
, &result
));
983 BOOL
IsVisible(const Point
&point
, const Graphics
*g
) const
986 SetStatus(DllExports::GdipIsVisibleRegionPointI(region
, point
.X
, point
.Y
, g
? g
->graphics
: NULL
, &result
));
990 BOOL
IsVisible(REAL x
, REAL y
, REAL width
, REAL height
, const Graphics
*g
) const
993 SetStatus(DllExports::GdipIsVisibleRegionRect(region
, x
, y
, width
, height
, g
? g
->graphics
: NULL
, &result
));
997 Status
MakeEmpty(VOID
)
999 return SetStatus(DllExports::GdipSetEmpty(region
));
1002 Status
MakeInfinite(VOID
)
1004 return SetStatus(DllExports::GdipSetInfinite(region
));
1007 Status
Transform(const Matrix
*matrix
)
1009 return SetStatus(DllExports::GdipTransformRegion(region
, matrix
? matrix
->matrix
: NULL
));
1012 Status
Translate(REAL dx
, REAL dy
)
1014 return SetStatus(DllExports::GdipTranslateRegion(region
, dx
, dy
));
1017 Status
Translate(INT dx
, INT dy
)
1019 return SetStatus(DllExports::GdipTranslateRegionI(region
, dx
, dy
));
1022 Status
Union(const Rect
&rect
)
1024 return SetStatus(DllExports::GdipCombineRegionRectI(region
, &rect
, CombineModeUnion
));
1027 Status
Union(const Region
*region
)
1029 return SetStatus(DllExports::GdipCombineRegionRegion(this->region
, region
? region
->region
: NULL
, CombineModeUnion
));
1032 Status
Union(const RectF
&rect
)
1034 return SetStatus(DllExports::GdipCombineRegionRect(region
, &rect
, CombineModeUnion
));
1037 Status
Union(const GraphicsPath
*path
)
1039 return SetStatus(DllExports::GdipCombineRegionPath(region
, path
? path
->path
: NULL
, CombineModeUnion
));
1042 Status
Xor(const GraphicsPath
*path
)
1044 return SetStatus(DllExports::GdipCombineRegionPath(region
, path
? path
->path
: NULL
, CombineModeXor
));
1047 Status
Xor(const RectF
&rect
)
1049 return SetStatus(DllExports::GdipCombineRegionRect(region
, &rect
, CombineModeXor
));
1052 Status
Xor(const Rect
&rect
)
1054 return SetStatus(DllExports::GdipCombineRegionRectI(region
, &rect
, CombineModeXor
));
1057 Status
Xor(const Region
*region
)
1059 return SetStatus(DllExports::GdipCombineRegionRegion(this->region
, region
? region
->region
: NULL
, CombineModeXor
));
1063 mutable Status status
;
1066 Status
SetStatus(Status status
) const
1070 this->status
= status
;
1076 class CustomLineCap
: public GdiplusBase
1079 CustomLineCap(const GraphicsPath
*fillPath
, const GraphicsPath
*strokePath
, LineCap baseCap
, REAL baseInset
);
1080 CustomLineCap
*Clone(VOID
);
1081 LineCap
GetBaseCap(VOID
);
1082 REAL
GetBaseInset(VOID
);
1083 Status
GetLastStatus(VOID
);
1084 Status
GetStrokeCaps(LineCap
*startCap
, LineCap
*endCap
);
1085 LineJoin
GetStrokeJoin(VOID
);
1086 REAL
GetWidthScale(VOID
);
1087 Status
SetBaseCap(LineCap baseCap
);
1088 Status
SetBaseInset(REAL inset
);
1089 Status
SetStrokeCap(LineCap strokeCap
);
1090 Status
SetStrokeCaps(LineCap startCap
, LineCap endCap
);
1091 Status
SetStrokeJoin(LineJoin lineJoin
);
1092 Status
SetWidthScale(IN REAL widthScale
);
1097 #endif /* _GDIPLUSHEADERS_H */