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
) : nativeImage(NULL
)
29 if (useEmbeddedColorManagement
)
30 lastStatus
= DllExports::GdipLoadImageFromStreamICM(stream
, &nativeImage
);
32 lastStatus
= DllExports::GdipLoadImageFromStream(stream
, &nativeImage
);
35 Image(const WCHAR
*filename
, BOOL useEmbeddedColorManagement
= FALSE
) : nativeImage(NULL
)
37 if (useEmbeddedColorManagement
)
38 lastStatus
= DllExports::GdipLoadImageFromFileICM(filename
, &nativeImage
);
40 lastStatus
= DllExports::GdipLoadImageFromFile(filename
, &nativeImage
);
46 GpImage
*cloneimage
= NULL
;
47 SetStatus(DllExports::GdipCloneImage(nativeImage
, &cloneimage
));
48 return new Image(cloneimage
, lastStatus
);
53 DllExports::GdipDisposeImage(nativeImage
);
57 FromFile(const WCHAR
*filename
, BOOL useEmbeddedColorManagement
= FALSE
)
59 return new Image(filename
, useEmbeddedColorManagement
);
63 FromStream(IStream
*stream
, BOOL useEmbeddedColorManagement
= FALSE
)
65 return new Image(stream
, useEmbeddedColorManagement
);
69 GetAllPropertyItems(UINT totalBufferSize
, UINT numProperties
, PropertyItem
*allItems
)
72 return SetStatus(InvalidParameter
);
73 return SetStatus(DllExports::GdipGetAllPropertyItems(nativeImage
, totalBufferSize
, numProperties
, allItems
));
77 GetBounds(RectF
*srcRect
, Unit
*srcUnit
)
79 return SetStatus(DllExports::GdipGetImageBounds(nativeImage
, srcRect
, srcUnit
));
83 GetEncoderParameterList(const CLSID
*clsidEncoder
, UINT size
, EncoderParameters
*buffer
)
86 // FIXME: Not available yet
87 return SetStatus(NotImplemented
);
89 return SetStatus(DllExports::GdipGetEncoderParameterList(nativeImage
, clsidEncoder
, size
, buffer
));
94 GetEncoderParameterListSize(const CLSID
*clsidEncoder
)
97 // FIXME: Not available yet
98 return SetStatus(NotImplemented
);
101 SetStatus(DllExports::GdipGetEncoderParameterListSize(nativeImage
, clsidEncoder
, &size
));
110 SetStatus(DllExports::GdipGetImageFlags(nativeImage
, &flags
));
115 GetFrameCount(const GUID
*dimensionID
)
118 SetStatus(DllExports::GdipImageGetFrameCount(nativeImage
, dimensionID
, &count
));
123 GetFrameDimensionsCount()
126 SetStatus(DllExports::GdipImageGetFrameDimensionsCount(nativeImage
, &count
));
131 GetFrameDimensionsList(GUID
*dimensionIDs
, UINT count
)
133 return SetStatus(DllExports::GdipImageGetFrameDimensionsList(nativeImage
, dimensionIDs
, count
));
140 SetStatus(DllExports::GdipGetImageHeight(nativeImage
, &height
));
145 GetHorizontalResolution()
147 REAL resolution
= 0.0f
;
148 SetStatus(DllExports::GdipGetImageHorizontalResolution(nativeImage
, &resolution
));
159 GetPalette(ColorPalette
*palette
, INT size
)
161 return SetStatus(DllExports::GdipGetImagePalette(nativeImage
, palette
, size
));
168 SetStatus(DllExports::GdipGetImagePaletteSize(nativeImage
, &size
));
173 GetPhysicalDimension(SizeF
*size
)
176 return SetStatus(InvalidParameter
);
178 return SetStatus(DllExports::GdipGetImageDimension(nativeImage
, &size
->Width
, &size
->Height
));
185 SetStatus(DllExports::GdipGetImagePixelFormat(nativeImage
, &format
));
192 UINT numOfProperty
= 0;
193 SetStatus(DllExports::GdipGetPropertyCount(nativeImage
, &numOfProperty
));
194 return numOfProperty
;
198 GetPropertyIdList(UINT numOfProperty
, PROPID
*list
)
200 return SetStatus(DllExports::GdipGetPropertyIdList(nativeImage
, numOfProperty
, list
));
204 GetPropertyItem(PROPID propId
, UINT propSize
, PropertyItem
*buffer
)
206 return SetStatus(DllExports::GdipGetPropertyItem(nativeImage
, propId
, propSize
, buffer
));
210 GetPropertyItemSize(PROPID propId
)
213 SetStatus(DllExports::GdipGetPropertyItemSize(nativeImage
, propId
, &size
));
218 GetPropertySize(UINT
*totalBufferSize
, UINT
*numProperties
)
220 return SetStatus(DllExports::GdipGetPropertySize(nativeImage
, totalBufferSize
, numProperties
));
224 GetRawFormat(GUID
*format
)
226 return SetStatus(DllExports::GdipGetImageRawFormat(nativeImage
, format
));
230 GetThumbnailImage(UINT thumbWidth
, UINT thumbHeight
, GetThumbnailImageAbort callback
, VOID
*callbackData
)
232 GpImage
*thumbImage
= NULL
;
233 SetStatus(DllExports::GdipGetImageThumbnail(
234 nativeImage
, thumbWidth
, thumbHeight
, &thumbImage
, callback
, callbackData
));
235 Image
*newImage
= new Image(thumbImage
, lastStatus
);
236 if (newImage
== NULL
)
238 DllExports::GdipDisposeImage(thumbImage
);
247 SetStatus(DllExports::GdipGetImageType(nativeImage
, &type
));
252 GetVerticalResolution()
254 REAL resolution
= 0.0f
;
255 SetStatus(DllExports::GdipGetImageVerticalResolution(nativeImage
, &resolution
));
263 SetStatus(DllExports::GdipGetImageWidth(nativeImage
, &width
));
268 RemovePropertyItem(PROPID propId
)
270 return SetStatus(DllExports::GdipRemovePropertyItem(nativeImage
, propId
));
274 RotateFlip(RotateFlipType rotateFlipType
)
276 return SetStatus(DllExports::GdipImageRotateFlip(nativeImage
, rotateFlipType
));
280 Save(IStream
*stream
, const CLSID
*clsidEncoder
, const EncoderParameters
*encoderParams
)
282 return SetStatus(DllExports::GdipSaveImageToStream(nativeImage
, stream
, clsidEncoder
, encoderParams
));
286 Save(const WCHAR
*filename
, const CLSID
*clsidEncoder
, const EncoderParameters
*encoderParams
)
288 return SetStatus(DllExports::GdipSaveImageToFile(nativeImage
, filename
, clsidEncoder
, encoderParams
));
292 SaveAdd(const EncoderParameters
*encoderParams
)
295 // FIXME: Not available yet
296 return SetStatus(NotImplemented
);
298 return SetStatus(DllExports::GdipSaveAdd(nativeImage
, encoderParams
));
303 SaveAdd(Image
*newImage
, const EncoderParameters
*encoderParams
)
306 // FIXME: Not available yet
307 return SetStatus(NotImplemented
);
310 return SetStatus(InvalidParameter
);
312 return SetStatus(DllExports::GdipSaveAddImage(nativeImage
, newImage
->nativeImage
, encoderParams
));
317 SelectActiveFrame(const GUID
*dimensionID
, UINT frameIndex
)
319 return SetStatus(DllExports::GdipImageSelectActiveFrame(nativeImage
, dimensionID
, frameIndex
));
323 SetPalette(const ColorPalette
*palette
)
325 return SetStatus(DllExports::GdipSetImagePalette(nativeImage
, palette
));
329 SetPropertyItem(const PropertyItem
*item
)
331 return SetStatus(DllExports::GdipSetPropertyItem(nativeImage
, item
));
338 return SetStatus(NotImplemented
);
342 SetLayout(const ImageLayout layout
)
344 return SetStatus(NotImplemented
);
349 GpImage
*nativeImage
;
350 mutable Status lastStatus
;
356 Image(GpImage
*image
, Status status
) : nativeImage(image
), lastStatus(status
)
361 SetStatus(Status status
) const
369 SetNativeImage(GpImage
*image
)
375 // Image is not copyable
376 Image(const Image
&);
378 operator=(const Image
&);
381 class Bitmap
: public Image
383 friend class CachedBitmap
;
386 // Bitmap(IDirectDrawSurface7 *surface) // <-- FIXME: compiler does not like this
388 // lastStatus = DllExports::GdipCreateBitmapFromDirectDrawSurface(surface, &bitmap);
391 Bitmap(INT width
, INT height
, Graphics
*target
)
393 GpBitmap
*bitmap
= NULL
;
394 lastStatus
= DllExports::GdipCreateBitmapFromGraphics(width
, height
, target
? target
->graphics
: NULL
, &bitmap
);
395 SetNativeImage(bitmap
);
398 Bitmap(const BITMAPINFO
*gdiBitmapInfo
, VOID
*gdiBitmapData
)
400 GpBitmap
*bitmap
= NULL
;
401 lastStatus
= DllExports::GdipCreateBitmapFromGdiDib(gdiBitmapInfo
, gdiBitmapData
, &bitmap
);
402 SetNativeImage(bitmap
);
405 Bitmap(INT width
, INT height
, PixelFormat format
)
407 GpBitmap
*bitmap
= NULL
;
408 lastStatus
= DllExports::GdipCreateBitmapFromScan0(width
, height
, 0, format
, NULL
, &bitmap
);
409 SetNativeImage(bitmap
);
412 Bitmap(HBITMAP hbm
, HPALETTE hpal
)
414 GpBitmap
*bitmap
= NULL
;
415 lastStatus
= DllExports::GdipCreateBitmapFromHBITMAP(hbm
, hpal
, &bitmap
);
416 SetNativeImage(bitmap
);
419 Bitmap(INT width
, INT height
, INT stride
, PixelFormat format
, BYTE
*scan0
)
421 GpBitmap
*bitmap
= NULL
;
422 lastStatus
= DllExports::GdipCreateBitmapFromScan0(width
, height
, stride
, format
, scan0
, &bitmap
);
423 SetNativeImage(bitmap
);
426 Bitmap(const WCHAR
*filename
, BOOL useIcm
)
428 GpBitmap
*bitmap
= NULL
;
431 lastStatus
= DllExports::GdipCreateBitmapFromFileICM(filename
, &bitmap
);
433 lastStatus
= DllExports::GdipCreateBitmapFromFile(filename
, &bitmap
);
435 SetNativeImage(bitmap
);
438 Bitmap(HINSTANCE hInstance
, const WCHAR
*bitmapName
)
440 GpBitmap
*bitmap
= NULL
;
441 lastStatus
= DllExports::GdipCreateBitmapFromResource(hInstance
, bitmapName
, &bitmap
);
442 SetNativeImage(bitmap
);
447 GpBitmap
*bitmap
= NULL
;
448 lastStatus
= DllExports::GdipCreateBitmapFromHICON(hicon
, &bitmap
);
449 SetNativeImage(bitmap
);
452 Bitmap(IStream
*stream
, BOOL useIcm
)
454 GpBitmap
*bitmap
= NULL
;
456 lastStatus
= DllExports::GdipCreateBitmapFromStreamICM(stream
, &bitmap
);
458 lastStatus
= DllExports::GdipCreateBitmapFromStream(stream
, &bitmap
);
459 SetNativeImage(bitmap
);
463 Clone(const Rect
&rect
, PixelFormat format
)
465 return Clone(rect
.X
, rect
.Y
, rect
.Width
, rect
.Height
, format
);
469 Clone(const RectF
&rect
, PixelFormat format
)
471 return Clone(rect
.X
, rect
.Y
, rect
.Width
, rect
.Height
, format
);
475 Clone(REAL x
, REAL y
, REAL width
, REAL height
, PixelFormat format
)
477 GpBitmap
*bitmap
= NULL
;
478 lastStatus
= DllExports::GdipCloneBitmapArea(x
, y
, width
, height
, format
, GetNativeBitmap(), &bitmap
);
480 if (lastStatus
!= Ok
)
483 Bitmap
*newBitmap
= new Bitmap(bitmap
);
484 if (newBitmap
== NULL
)
486 DllExports::GdipDisposeImage(bitmap
);
493 Clone(INT x
, INT y
, INT width
, INT height
, PixelFormat format
)
495 GpBitmap
*bitmap
= NULL
;
496 lastStatus
= DllExports::GdipCloneBitmapAreaI(x
, y
, width
, height
, format
, GetNativeBitmap(), &bitmap
);
498 if (lastStatus
!= Ok
)
501 Bitmap
*newBitmap
= new Bitmap(bitmap
);
502 if (newBitmap
== NULL
)
504 DllExports::GdipDisposeImage(bitmap
);
511 FromBITMAPINFO(const BITMAPINFO
*gdiBitmapInfo
, VOID
*gdiBitmapData
)
513 return new Bitmap(gdiBitmapInfo
, gdiBitmapData
);
516 // static Bitmap *FromDirectDrawSurface7(IDirectDrawSurface7 *surface) // <-- FIXME: compiler does not like this
518 // return new Bitmap(surface);
522 FromFile(const WCHAR
*filename
, BOOL useEmbeddedColorManagement
)
524 return new Bitmap(filename
, useEmbeddedColorManagement
);
528 FromHBITMAP(HBITMAP hbm
, HPALETTE hpal
)
530 return new Bitmap(hbm
, hpal
);
534 FromHICON(HICON hicon
)
536 return new Bitmap(hicon
);
540 FromResource(HINSTANCE hInstance
, const WCHAR
*bitmapName
)
542 return new Bitmap(hInstance
, bitmapName
);
546 FromStream(IStream
*stream
, BOOL useEmbeddedColorManagement
)
548 return new Bitmap(stream
, useEmbeddedColorManagement
);
552 GetHBITMAP(const Color
&colorBackground
, HBITMAP
*hbmReturn
)
555 DllExports::GdipCreateHBITMAPFromBitmap(GetNativeBitmap(), hbmReturn
, colorBackground
.GetValue()));
559 GetHICON(HICON
*hicon
)
561 return SetStatus(DllExports::GdipCreateHICONFromBitmap(GetNativeBitmap(), hicon
));
565 GetPixel(INT x
, INT y
, Color
*color
)
568 Status s
= SetStatus(DllExports::GdipBitmapGetPixel(GetNativeBitmap(), x
, y
, &argb
));
570 color
->SetValue(argb
);
575 LockBits(const Rect
*rect
, UINT flags
, PixelFormat format
, BitmapData
*lockedBitmapData
)
577 return SetStatus(DllExports::GdipBitmapLockBits(GetNativeBitmap(), rect
, flags
, format
, lockedBitmapData
));
581 SetPixel(INT x
, INT y
, const Color
&color
)
583 return SetStatus(DllExports::GdipBitmapSetPixel(GetNativeBitmap(), x
, y
, color
.GetValue()));
587 SetResolution(REAL xdpi
, REAL ydpi
)
589 return SetStatus(DllExports::GdipBitmapSetResolution(GetNativeBitmap(), xdpi
, ydpi
));
593 UnlockBits(BitmapData
*lockedBitmapData
)
595 return SetStatus(DllExports::GdipBitmapUnlockBits(GetNativeBitmap(), lockedBitmapData
));
603 Bitmap(GpBitmap
*nativeBitmap
)
606 SetNativeImage(nativeBitmap
);
610 GetNativeBitmap() const
612 return static_cast<GpBitmap
*>(nativeImage
);
616 class CachedBitmap
: public GdiplusBase
619 CachedBitmap(Bitmap
*bitmap
, Graphics
*graphics
)
621 nativeCachedBitmap
= NULL
;
622 lastStatus
= DllExports::GdipCreateCachedBitmap(
623 bitmap
->GetNativeBitmap(), graphics
? graphics
->graphics
: NULL
, &nativeCachedBitmap
);
628 DllExports::GdipDeleteCachedBitmap(nativeCachedBitmap
);
638 mutable Status lastStatus
;
639 GpCachedBitmap
*nativeCachedBitmap
;
642 // CachedBitmap is not copyable
643 CachedBitmap(const CachedBitmap
&);
645 operator=(const CachedBitmap
&);
648 class FontCollection
: public GdiplusBase
650 friend class FontFamily
;
658 GetFamilies(INT numSought
, FontFamily
*gpfamilies
, INT
*numFound
) const
660 return NotImplemented
;
664 GetFamilyCount() const
672 return NotImplemented
;
676 GpFontCollection
*fontCollection
;
679 class FontFamily
: public GdiplusBase
688 FontFamily(const WCHAR
*name
, const FontCollection
*fontCollection
)
690 status
= DllExports::GdipCreateFontFamilyFromName(
691 name
, fontCollection
? fontCollection
->fontCollection
: NULL
, &fontFamily
);
700 static const FontFamily
*
703 FontFamily
*genericMonospace
= new FontFamily();
704 genericMonospace
->status
=
705 DllExports::GdipGetGenericFontFamilyMonospace(genericMonospace
? &genericMonospace
->fontFamily
: NULL
);
706 return genericMonospace
;
709 static const FontFamily
*
712 FontFamily
*genericSansSerif
= new FontFamily();
713 genericSansSerif
->status
=
714 DllExports::GdipGetGenericFontFamilySansSerif(genericSansSerif
? &genericSansSerif
->fontFamily
: NULL
);
715 return genericSansSerif
;
718 static const FontFamily
*
721 FontFamily
*genericSerif
= new FontFamily();
722 genericSerif
->status
=
723 DllExports::GdipGetGenericFontFamilyMonospace(genericSerif
? &genericSerif
->fontFamily
: NULL
);
728 GetCellAscent(INT style
) const
731 SetStatus(DllExports::GdipGetCellAscent(fontFamily
, style
, &CellAscent
));
736 GetCellDescent(INT style
) const
739 SetStatus(DllExports::GdipGetCellDescent(fontFamily
, style
, &CellDescent
));
744 GetEmHeight(INT style
)
747 SetStatus(DllExports::GdipGetEmHeight(fontFamily
, style
, &EmHeight
));
752 GetFamilyName(WCHAR name
[LF_FACESIZE
], WCHAR language
) const
754 return SetStatus(DllExports::GdipGetFamilyName(fontFamily
, name
, language
));
758 GetLastStatus() const
764 GetLineSpacing(INT style
) const
767 SetStatus(DllExports::GdipGetLineSpacing(fontFamily
, style
, &LineSpacing
));
778 IsStyleAvailable(INT style
) const
781 SetStatus(DllExports::GdipIsStyleAvailable(fontFamily
, style
, &StyleAvailable
));
782 return StyleAvailable
;
786 mutable Status status
;
787 GpFontFamily
*fontFamily
;
790 SetStatus(Status status
) const
794 this->status
= status
;
799 class InstalledFontFamily
: public FontFamily
802 InstalledFontFamily()
807 class PrivateFontCollection
: public FontCollection
810 PrivateFontCollection()
815 AddFontFile(const WCHAR
*filename
)
817 return NotImplemented
;
821 AddMemoryFont(const VOID
*memory
, INT length
)
823 return NotImplemented
;
827 class Font
: public GdiplusBase
830 friend class FontFamily
;
831 friend class FontCollection
;
832 friend class Graphics
;
834 Font(const FontFamily
*family
, REAL emSize
, INT style
, Unit unit
)
836 status
= DllExports::GdipCreateFont(family
->fontFamily
, emSize
, style
, unit
, &font
);
839 Font(HDC hdc
, const HFONT hfont
)
843 Font(HDC hdc
, const LOGFONTA
*logfont
)
845 status
= DllExports::GdipCreateFontFromLogfontA(hdc
, logfont
, &font
);
848 Font(HDC hdc
, const LOGFONTW
*logfont
)
850 status
= DllExports::GdipCreateFontFromLogfontW(hdc
, logfont
, &font
);
853 Font(const WCHAR
*familyName
, REAL emSize
, INT style
, Unit unit
, const FontCollection
*fontCollection
)
859 status
= DllExports::GdipCreateFontFromDC(hdc
, &font
);
865 Font
*cloneFont
= new Font();
866 cloneFont
->status
= DllExports::GdipCloneFont(font
, cloneFont
? &cloneFont
->font
: NULL
);
871 GetFamily(FontFamily
*family
) const
873 return SetStatus(DllExports::GdipGetFamily(font
, family
? &family
->fontFamily
: NULL
));
877 GetHeight(const Graphics
*graphics
) const
880 SetStatus(DllExports::GdipGetFontHeight(font
, graphics
? graphics
->graphics
: NULL
, &height
));
885 GetHeight(REAL dpi
) const
888 SetStatus(DllExports::GdipGetFontHeightGivenDPI(font
, dpi
, &height
));
893 GetLastStatus() const
899 GetLogFontA(const Graphics
*g
, LOGFONTA
*logfontA
) const
901 return SetStatus(DllExports::GdipGetLogFontA(font
, g
? g
->graphics
: NULL
, logfontA
));
905 GetLogFontW(const Graphics
*g
, LOGFONTW
*logfontW
) const
907 return SetStatus(DllExports::GdipGetLogFontW(font
, g
? g
->graphics
: NULL
, logfontW
));
914 SetStatus(DllExports::GdipGetFontSize(font
, &size
));
922 SetStatus(DllExports::GdipGetFontStyle(font
, &style
));
930 SetStatus(DllExports::GdipGetFontUnit(font
, &unit
));
946 mutable Status status
;
950 SetStatus(Status status
) const
954 this->status
= status
;
959 class Region
: public GdiplusBase
962 friend class Graphics
;
963 friend class GraphicsPath
;
966 Region(const Rect
&rect
)
968 status
= DllExports::GdipCreateRegionRectI(&rect
, ®ion
);
973 status
= DllExports::GdipCreateRegion(®ion
);
976 Region(const BYTE
*regionData
, INT size
)
978 status
= DllExports::GdipCreateRegionRgnData(regionData
, size
, ®ion
);
981 Region(const GraphicsPath
*path
)
983 status
= DllExports::GdipCreateRegionPath(path
->path
, ®ion
);
988 status
= DllExports::GdipCreateRegionHrgn(hRgn
, ®ion
);
991 Region(const RectF
&rect
)
993 status
= DllExports::GdipCreateRegionRect(&rect
, ®ion
);
999 Region
*cloneRegion
= new Region();
1000 cloneRegion
->status
= DllExports::GdipCloneRegion(region
, cloneRegion
? &cloneRegion
->region
: NULL
);
1005 Complement(const GraphicsPath
*path
)
1007 return SetStatus(DllExports::GdipCombineRegionPath(region
, path
? path
->path
: NULL
, CombineModeComplement
));
1011 Complement(const Region
*region
)
1014 DllExports::GdipCombineRegionRegion(this->region
, region
? region
->region
: NULL
, CombineModeComplement
));
1018 Complement(const Rect
&rect
)
1020 return SetStatus(DllExports::GdipCombineRegionRectI(region
, &rect
, CombineModeComplement
));
1024 Complement(const RectF
&rect
)
1026 return SetStatus(DllExports::GdipCombineRegionRect(region
, &rect
, CombineModeComplement
));
1030 Equals(const Region
*region
, const Graphics
*g
) const
1033 SetStatus(DllExports::GdipIsEqualRegion(
1034 this->region
, region
? region
->region
: NULL
, g
? g
->graphics
: NULL
, &result
));
1039 Exclude(const GraphicsPath
*path
)
1041 return SetStatus(DllExports::GdipCombineRegionPath(region
, path
? path
->path
: NULL
, CombineModeExclude
));
1045 Exclude(const RectF
&rect
)
1047 return SetStatus(DllExports::GdipCombineRegionRect(region
, &rect
, CombineModeExclude
));
1051 Exclude(const Rect
&rect
)
1053 return SetStatus(DllExports::GdipCombineRegionRectI(region
, &rect
, CombineModeExclude
));
1057 Exclude(const Region
*region
)
1060 DllExports::GdipCombineRegionRegion(this->region
, region
? region
->region
: NULL
, CombineModeExclude
));
1066 return new Region(hRgn
);
1070 GetBounds(Rect
*rect
, const Graphics
*g
) const
1072 return SetStatus(DllExports::GdipGetRegionBoundsI(region
, g
? g
->graphics
: NULL
, rect
));
1076 GetBounds(RectF
*rect
, const Graphics
*g
) const
1078 return SetStatus(DllExports::GdipGetRegionBounds(region
, g
? g
->graphics
: NULL
, rect
));
1082 GetData(BYTE
*buffer
, UINT bufferSize
, UINT
*sizeFilled
) const
1084 return SetStatus(DllExports::GdipGetRegionData(region
, buffer
, bufferSize
, sizeFilled
));
1091 SetStatus(DllExports::GdipGetRegionDataSize(region
, &bufferSize
));
1096 GetHRGN(const Graphics
*g
) const
1099 SetStatus(DllExports::GdipGetRegionHRgn(region
, g
? g
->graphics
: NULL
, &hRgn
));
1110 GetRegionScans(const Matrix
*matrix
, Rect
*rects
, INT
*count
) const
1112 return SetStatus(DllExports::GdipGetRegionScansI(region
, rects
, count
, matrix
? matrix
->matrix
: NULL
));
1116 GetRegionScans(const Matrix
*matrix
, RectF
*rects
, INT
*count
) const
1118 return SetStatus(DllExports::GdipGetRegionScans(region
, rects
, count
, matrix
? matrix
->matrix
: NULL
));
1122 GetRegionScansCount(const Matrix
*matrix
) const
1125 SetStatus(DllExports::GdipGetRegionScansCount(region
, &count
, matrix
? matrix
->matrix
: NULL
));
1130 Intersect(const Rect
&rect
)
1132 return SetStatus(DllExports::GdipCombineRegionRectI(region
, &rect
, CombineModeIntersect
));
1136 Intersect(const GraphicsPath
*path
)
1138 return SetStatus(DllExports::GdipCombineRegionPath(region
, path
? path
->path
: NULL
, CombineModeIntersect
));
1142 Intersect(const RectF
&rect
)
1144 return SetStatus(DllExports::GdipCombineRegionRect(region
, &rect
, CombineModeIntersect
));
1148 Intersect(const Region
*region
)
1151 DllExports::GdipCombineRegionRegion(this->region
, region
? region
->region
: NULL
, CombineModeIntersect
));
1155 IsEmpty(const Graphics
*g
) const
1158 SetStatus(DllExports::GdipIsEmptyRegion(region
, g
? g
->graphics
: NULL
, &result
));
1163 IsInfinite(const Graphics
*g
) const
1166 SetStatus(DllExports::GdipIsInfiniteRegion(region
, g
? g
->graphics
: NULL
, &result
));
1171 IsVisible(const PointF
&point
, const Graphics
*g
) const
1174 SetStatus(DllExports::GdipIsVisibleRegionPoint(region
, point
.X
, point
.Y
, g
? g
->graphics
: NULL
, &result
));
1179 IsVisible(const RectF
&rect
, const Graphics
*g
) const
1182 SetStatus(DllExports::GdipIsVisibleRegionRect(
1183 region
, rect
.X
, rect
.Y
, rect
.Width
, rect
.Height
, g
? g
->graphics
: NULL
, &result
));
1188 IsVisible(const Rect
&rect
, const Graphics
*g
) const
1191 SetStatus(DllExports::GdipIsVisibleRegionRectI(
1192 region
, rect
.X
, rect
.Y
, rect
.Width
, rect
.Height
, g
? g
->graphics
: NULL
, &result
));
1197 IsVisible(INT x
, INT y
, const Graphics
*g
) const
1200 SetStatus(DllExports::GdipIsVisibleRegionPointI(region
, x
, y
, g
? g
->graphics
: NULL
, &result
));
1205 IsVisible(REAL x
, REAL y
, const Graphics
*g
) const
1208 SetStatus(DllExports::GdipIsVisibleRegionPoint(region
, x
, y
, g
? g
->graphics
: NULL
, &result
));
1213 IsVisible(INT x
, INT y
, INT width
, INT height
, const Graphics
*g
) const
1216 SetStatus(DllExports::GdipIsVisibleRegionRectI(region
, x
, y
, width
, height
, g
? g
->graphics
: NULL
, &result
));
1221 IsVisible(const Point
&point
, const Graphics
*g
) const
1224 SetStatus(DllExports::GdipIsVisibleRegionPointI(region
, point
.X
, point
.Y
, g
? g
->graphics
: NULL
, &result
));
1229 IsVisible(REAL x
, REAL y
, REAL width
, REAL height
, const Graphics
*g
) const
1232 SetStatus(DllExports::GdipIsVisibleRegionRect(region
, x
, y
, width
, height
, g
? g
->graphics
: NULL
, &result
));
1239 return SetStatus(DllExports::GdipSetEmpty(region
));
1245 return SetStatus(DllExports::GdipSetInfinite(region
));
1249 Transform(const Matrix
*matrix
)
1251 return SetStatus(DllExports::GdipTransformRegion(region
, matrix
? matrix
->matrix
: NULL
));
1255 Translate(REAL dx
, REAL dy
)
1257 return SetStatus(DllExports::GdipTranslateRegion(region
, dx
, dy
));
1261 Translate(INT dx
, INT dy
)
1263 return SetStatus(DllExports::GdipTranslateRegionI(region
, dx
, dy
));
1267 Union(const Rect
&rect
)
1269 return SetStatus(DllExports::GdipCombineRegionRectI(region
, &rect
, CombineModeUnion
));
1273 Union(const Region
*region
)
1276 DllExports::GdipCombineRegionRegion(this->region
, region
? region
->region
: NULL
, CombineModeUnion
));
1280 Union(const RectF
&rect
)
1282 return SetStatus(DllExports::GdipCombineRegionRect(region
, &rect
, CombineModeUnion
));
1286 Union(const GraphicsPath
*path
)
1288 return SetStatus(DllExports::GdipCombineRegionPath(region
, path
? path
->path
: NULL
, CombineModeUnion
));
1292 Xor(const GraphicsPath
*path
)
1294 return SetStatus(DllExports::GdipCombineRegionPath(region
, path
? path
->path
: NULL
, CombineModeXor
));
1298 Xor(const RectF
&rect
)
1300 return SetStatus(DllExports::GdipCombineRegionRect(region
, &rect
, CombineModeXor
));
1304 Xor(const Rect
&rect
)
1306 return SetStatus(DllExports::GdipCombineRegionRectI(region
, &rect
, CombineModeXor
));
1310 Xor(const Region
*region
)
1313 DllExports::GdipCombineRegionRegion(this->region
, region
? region
->region
: NULL
, CombineModeXor
));
1317 mutable Status status
;
1321 SetStatus(Status status
) const
1325 this->status
= status
;
1330 class CustomLineCap
: public GdiplusBase
1333 CustomLineCap(const GraphicsPath
*fillPath
, const GraphicsPath
*strokePath
, LineCap baseCap
, REAL baseInset
);
1344 GetStrokeCaps(LineCap
*startCap
, LineCap
*endCap
);
1352 SetBaseCap(LineCap baseCap
);
1355 SetBaseInset(REAL inset
);
1358 SetStrokeCap(LineCap strokeCap
);
1361 SetStrokeCaps(LineCap startCap
, LineCap endCap
);
1364 SetStrokeJoin(LineJoin lineJoin
);
1367 SetWidthScale(IN REAL widthScale
);
1373 #endif /* _GDIPLUSHEADERS_H */