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
;
26 friend class TextureBrush
;
28 Image(IStream
*stream
, BOOL useEmbeddedColorManagement
= FALSE
) : nativeImage(NULL
)
30 if (useEmbeddedColorManagement
)
31 lastStatus
= DllExports::GdipLoadImageFromStreamICM(stream
, &nativeImage
);
33 lastStatus
= DllExports::GdipLoadImageFromStream(stream
, &nativeImage
);
36 Image(const WCHAR
*filename
, BOOL useEmbeddedColorManagement
= FALSE
) : nativeImage(NULL
)
38 if (useEmbeddedColorManagement
)
39 lastStatus
= DllExports::GdipLoadImageFromFileICM(filename
, &nativeImage
);
41 lastStatus
= DllExports::GdipLoadImageFromFile(filename
, &nativeImage
);
47 GpImage
*cloneimage
= NULL
;
48 SetStatus(DllExports::GdipCloneImage(nativeImage
, &cloneimage
));
49 return new Image(cloneimage
, lastStatus
);
54 DllExports::GdipDisposeImage(nativeImage
);
58 FromFile(const WCHAR
*filename
, BOOL useEmbeddedColorManagement
= FALSE
)
60 return new Image(filename
, useEmbeddedColorManagement
);
64 FromStream(IStream
*stream
, BOOL useEmbeddedColorManagement
= FALSE
)
66 return new Image(stream
, useEmbeddedColorManagement
);
70 GetAllPropertyItems(UINT totalBufferSize
, UINT numProperties
, PropertyItem
*allItems
)
73 return SetStatus(InvalidParameter
);
74 return SetStatus(DllExports::GdipGetAllPropertyItems(nativeImage
, totalBufferSize
, numProperties
, allItems
));
78 GetBounds(RectF
*srcRect
, Unit
*srcUnit
)
80 return SetStatus(DllExports::GdipGetImageBounds(nativeImage
, srcRect
, srcUnit
));
84 GetEncoderParameterList(const CLSID
*clsidEncoder
, UINT size
, EncoderParameters
*buffer
)
87 // FIXME: Not available yet
88 return SetStatus(NotImplemented
);
90 return SetStatus(DllExports::GdipGetEncoderParameterList(nativeImage
, clsidEncoder
, size
, buffer
));
95 GetEncoderParameterListSize(const CLSID
*clsidEncoder
)
98 // FIXME: Not available yet
99 return SetStatus(NotImplemented
);
102 SetStatus(DllExports::GdipGetEncoderParameterListSize(nativeImage
, clsidEncoder
, &size
));
111 SetStatus(DllExports::GdipGetImageFlags(nativeImage
, &flags
));
116 GetFrameCount(const GUID
*dimensionID
)
119 SetStatus(DllExports::GdipImageGetFrameCount(nativeImage
, dimensionID
, &count
));
124 GetFrameDimensionsCount()
127 SetStatus(DllExports::GdipImageGetFrameDimensionsCount(nativeImage
, &count
));
132 GetFrameDimensionsList(GUID
*dimensionIDs
, UINT count
)
134 return SetStatus(DllExports::GdipImageGetFrameDimensionsList(nativeImage
, dimensionIDs
, count
));
141 SetStatus(DllExports::GdipGetImageHeight(nativeImage
, &height
));
146 GetHorizontalResolution()
148 REAL resolution
= 0.0f
;
149 SetStatus(DllExports::GdipGetImageHorizontalResolution(nativeImage
, &resolution
));
160 GetPalette(ColorPalette
*palette
, INT size
)
162 return SetStatus(DllExports::GdipGetImagePalette(nativeImage
, palette
, size
));
169 SetStatus(DllExports::GdipGetImagePaletteSize(nativeImage
, &size
));
174 GetPhysicalDimension(SizeF
*size
)
177 return SetStatus(InvalidParameter
);
179 return SetStatus(DllExports::GdipGetImageDimension(nativeImage
, &size
->Width
, &size
->Height
));
186 SetStatus(DllExports::GdipGetImagePixelFormat(nativeImage
, &format
));
193 UINT numOfProperty
= 0;
194 SetStatus(DllExports::GdipGetPropertyCount(nativeImage
, &numOfProperty
));
195 return numOfProperty
;
199 GetPropertyIdList(UINT numOfProperty
, PROPID
*list
)
201 return SetStatus(DllExports::GdipGetPropertyIdList(nativeImage
, numOfProperty
, list
));
205 GetPropertyItem(PROPID propId
, UINT propSize
, PropertyItem
*buffer
)
207 return SetStatus(DllExports::GdipGetPropertyItem(nativeImage
, propId
, propSize
, buffer
));
211 GetPropertyItemSize(PROPID propId
)
214 SetStatus(DllExports::GdipGetPropertyItemSize(nativeImage
, propId
, &size
));
219 GetPropertySize(UINT
*totalBufferSize
, UINT
*numProperties
)
221 return SetStatus(DllExports::GdipGetPropertySize(nativeImage
, totalBufferSize
, numProperties
));
225 GetRawFormat(GUID
*format
)
227 return SetStatus(DllExports::GdipGetImageRawFormat(nativeImage
, format
));
231 GetThumbnailImage(UINT thumbWidth
, UINT thumbHeight
, GetThumbnailImageAbort callback
, VOID
*callbackData
)
233 GpImage
*thumbImage
= NULL
;
234 SetStatus(DllExports::GdipGetImageThumbnail(
235 nativeImage
, thumbWidth
, thumbHeight
, &thumbImage
, callback
, callbackData
));
236 Image
*newImage
= new Image(thumbImage
, lastStatus
);
237 if (newImage
== NULL
)
239 DllExports::GdipDisposeImage(thumbImage
);
248 SetStatus(DllExports::GdipGetImageType(nativeImage
, &type
));
253 GetVerticalResolution()
255 REAL resolution
= 0.0f
;
256 SetStatus(DllExports::GdipGetImageVerticalResolution(nativeImage
, &resolution
));
264 SetStatus(DllExports::GdipGetImageWidth(nativeImage
, &width
));
269 RemovePropertyItem(PROPID propId
)
271 return SetStatus(DllExports::GdipRemovePropertyItem(nativeImage
, propId
));
275 RotateFlip(RotateFlipType rotateFlipType
)
277 return SetStatus(DllExports::GdipImageRotateFlip(nativeImage
, rotateFlipType
));
281 Save(IStream
*stream
, const CLSID
*clsidEncoder
, const EncoderParameters
*encoderParams
)
283 return SetStatus(DllExports::GdipSaveImageToStream(nativeImage
, stream
, clsidEncoder
, encoderParams
));
287 Save(const WCHAR
*filename
, const CLSID
*clsidEncoder
, const EncoderParameters
*encoderParams
)
289 return SetStatus(DllExports::GdipSaveImageToFile(nativeImage
, filename
, clsidEncoder
, encoderParams
));
293 SaveAdd(const EncoderParameters
*encoderParams
)
296 // FIXME: Not available yet
297 return SetStatus(NotImplemented
);
299 return SetStatus(DllExports::GdipSaveAdd(nativeImage
, encoderParams
));
304 SaveAdd(Image
*newImage
, const EncoderParameters
*encoderParams
)
307 // FIXME: Not available yet
308 return SetStatus(NotImplemented
);
311 return SetStatus(InvalidParameter
);
313 return SetStatus(DllExports::GdipSaveAddImage(nativeImage
, newImage
->nativeImage
, encoderParams
));
318 SelectActiveFrame(const GUID
*dimensionID
, UINT frameIndex
)
320 return SetStatus(DllExports::GdipImageSelectActiveFrame(nativeImage
, dimensionID
, frameIndex
));
324 SetPalette(const ColorPalette
*palette
)
326 return SetStatus(DllExports::GdipSetImagePalette(nativeImage
, palette
));
330 SetPropertyItem(const PropertyItem
*item
)
332 return SetStatus(DllExports::GdipSetPropertyItem(nativeImage
, item
));
339 return SetStatus(NotImplemented
);
343 SetLayout(const ImageLayout layout
)
345 return SetStatus(NotImplemented
);
350 GpImage
*nativeImage
;
351 mutable Status lastStatus
;
357 Image(GpImage
*image
, Status status
) : nativeImage(image
), lastStatus(status
)
362 SetStatus(Status status
) const
370 SetNativeImage(GpImage
*image
)
376 // Image is not copyable
377 Image(const Image
&);
379 operator=(const Image
&);
382 friend inline GpImage
*&
383 getNat(const Image
*image
)
385 return const_cast<Image
*>(image
)->nativeImage
;
391 getNat(const Graphics
*graph
);
393 class Bitmap
: public Image
395 friend class CachedBitmap
;
398 // Bitmap(IDirectDrawSurface7 *surface) // <-- FIXME: compiler does not like this
400 // lastStatus = DllExports::GdipCreateBitmapFromDirectDrawSurface(surface, &bitmap);
403 Bitmap(INT width
, INT height
, Graphics
*target
)
405 GpBitmap
*bitmap
= NULL
;
406 lastStatus
= DllExports::GdipCreateBitmapFromGraphics(width
, height
, target
? getNat(target
) : NULL
, &bitmap
);
407 SetNativeImage(bitmap
);
410 Bitmap(const BITMAPINFO
*gdiBitmapInfo
, VOID
*gdiBitmapData
)
412 GpBitmap
*bitmap
= NULL
;
413 lastStatus
= DllExports::GdipCreateBitmapFromGdiDib(gdiBitmapInfo
, gdiBitmapData
, &bitmap
);
414 SetNativeImage(bitmap
);
417 Bitmap(INT width
, INT height
, PixelFormat format
)
419 GpBitmap
*bitmap
= NULL
;
420 lastStatus
= DllExports::GdipCreateBitmapFromScan0(width
, height
, 0, format
, NULL
, &bitmap
);
421 SetNativeImage(bitmap
);
424 Bitmap(HBITMAP hbm
, HPALETTE hpal
)
426 GpBitmap
*bitmap
= NULL
;
427 lastStatus
= DllExports::GdipCreateBitmapFromHBITMAP(hbm
, hpal
, &bitmap
);
428 SetNativeImage(bitmap
);
431 Bitmap(INT width
, INT height
, INT stride
, PixelFormat format
, BYTE
*scan0
)
433 GpBitmap
*bitmap
= NULL
;
434 lastStatus
= DllExports::GdipCreateBitmapFromScan0(width
, height
, stride
, format
, scan0
, &bitmap
);
435 SetNativeImage(bitmap
);
438 Bitmap(const WCHAR
*filename
, BOOL useIcm
)
440 GpBitmap
*bitmap
= NULL
;
443 lastStatus
= DllExports::GdipCreateBitmapFromFileICM(filename
, &bitmap
);
445 lastStatus
= DllExports::GdipCreateBitmapFromFile(filename
, &bitmap
);
447 SetNativeImage(bitmap
);
450 Bitmap(HINSTANCE hInstance
, const WCHAR
*bitmapName
)
452 GpBitmap
*bitmap
= NULL
;
453 lastStatus
= DllExports::GdipCreateBitmapFromResource(hInstance
, bitmapName
, &bitmap
);
454 SetNativeImage(bitmap
);
459 GpBitmap
*bitmap
= NULL
;
460 lastStatus
= DllExports::GdipCreateBitmapFromHICON(hicon
, &bitmap
);
461 SetNativeImage(bitmap
);
464 Bitmap(IStream
*stream
, BOOL useIcm
)
466 GpBitmap
*bitmap
= NULL
;
468 lastStatus
= DllExports::GdipCreateBitmapFromStreamICM(stream
, &bitmap
);
470 lastStatus
= DllExports::GdipCreateBitmapFromStream(stream
, &bitmap
);
471 SetNativeImage(bitmap
);
475 Clone(const Rect
&rect
, PixelFormat format
)
477 return Clone(rect
.X
, rect
.Y
, rect
.Width
, rect
.Height
, format
);
481 Clone(const RectF
&rect
, PixelFormat format
)
483 return Clone(rect
.X
, rect
.Y
, rect
.Width
, rect
.Height
, format
);
487 Clone(REAL x
, REAL y
, REAL width
, REAL height
, PixelFormat format
)
489 GpBitmap
*bitmap
= NULL
;
490 lastStatus
= DllExports::GdipCloneBitmapArea(x
, y
, width
, height
, format
, GetNativeBitmap(), &bitmap
);
492 if (lastStatus
!= Ok
)
495 Bitmap
*newBitmap
= new Bitmap(bitmap
);
496 if (newBitmap
== NULL
)
498 DllExports::GdipDisposeImage(bitmap
);
505 Clone(INT x
, INT y
, INT width
, INT height
, PixelFormat format
)
507 GpBitmap
*bitmap
= NULL
;
508 lastStatus
= DllExports::GdipCloneBitmapAreaI(x
, y
, width
, height
, format
, GetNativeBitmap(), &bitmap
);
510 if (lastStatus
!= Ok
)
513 Bitmap
*newBitmap
= new Bitmap(bitmap
);
514 if (newBitmap
== NULL
)
516 DllExports::GdipDisposeImage(bitmap
);
523 FromBITMAPINFO(const BITMAPINFO
*gdiBitmapInfo
, VOID
*gdiBitmapData
)
525 return new Bitmap(gdiBitmapInfo
, gdiBitmapData
);
528 // static Bitmap *FromDirectDrawSurface7(IDirectDrawSurface7 *surface) // <-- FIXME: compiler does not like this
530 // return new Bitmap(surface);
534 FromFile(const WCHAR
*filename
, BOOL useEmbeddedColorManagement
)
536 return new Bitmap(filename
, useEmbeddedColorManagement
);
540 FromHBITMAP(HBITMAP hbm
, HPALETTE hpal
)
542 return new Bitmap(hbm
, hpal
);
546 FromHICON(HICON hicon
)
548 return new Bitmap(hicon
);
552 FromResource(HINSTANCE hInstance
, const WCHAR
*bitmapName
)
554 return new Bitmap(hInstance
, bitmapName
);
558 FromStream(IStream
*stream
, BOOL useEmbeddedColorManagement
)
560 return new Bitmap(stream
, useEmbeddedColorManagement
);
564 GetHBITMAP(const Color
&colorBackground
, HBITMAP
*hbmReturn
)
567 DllExports::GdipCreateHBITMAPFromBitmap(GetNativeBitmap(), hbmReturn
, colorBackground
.GetValue()));
571 GetHICON(HICON
*hicon
)
573 return SetStatus(DllExports::GdipCreateHICONFromBitmap(GetNativeBitmap(), hicon
));
577 GetPixel(INT x
, INT y
, Color
*color
)
580 Status s
= SetStatus(DllExports::GdipBitmapGetPixel(GetNativeBitmap(), x
, y
, &argb
));
582 color
->SetValue(argb
);
587 LockBits(const Rect
*rect
, UINT flags
, PixelFormat format
, BitmapData
*lockedBitmapData
)
589 return SetStatus(DllExports::GdipBitmapLockBits(GetNativeBitmap(), rect
, flags
, format
, lockedBitmapData
));
593 SetPixel(INT x
, INT y
, const Color
&color
)
595 return SetStatus(DllExports::GdipBitmapSetPixel(GetNativeBitmap(), x
, y
, color
.GetValue()));
599 SetResolution(REAL xdpi
, REAL ydpi
)
601 return SetStatus(DllExports::GdipBitmapSetResolution(GetNativeBitmap(), xdpi
, ydpi
));
605 UnlockBits(BitmapData
*lockedBitmapData
)
607 return SetStatus(DllExports::GdipBitmapUnlockBits(GetNativeBitmap(), lockedBitmapData
));
615 Bitmap(GpBitmap
*nativeBitmap
)
618 SetNativeImage(nativeBitmap
);
622 GetNativeBitmap() const
624 return static_cast<GpBitmap
*>(nativeImage
);
628 class CachedBitmap
: public GdiplusBase
631 CachedBitmap(Bitmap
*bitmap
, Graphics
*graphics
)
633 nativeCachedBitmap
= NULL
;
634 lastStatus
= DllExports::GdipCreateCachedBitmap(
635 bitmap
->GetNativeBitmap(), graphics
? getNat(graphics
) : NULL
, &nativeCachedBitmap
);
640 DllExports::GdipDeleteCachedBitmap(nativeCachedBitmap
);
650 mutable Status lastStatus
;
651 GpCachedBitmap
*nativeCachedBitmap
;
654 // CachedBitmap is not copyable
655 CachedBitmap(const CachedBitmap
&);
657 operator=(const CachedBitmap
&);
660 class FontCollection
: public GdiplusBase
662 friend class FontFamily
;
665 FontCollection() : nativeFontCollection(NULL
), lastStatus(Ok
)
669 virtual ~FontCollection()
674 GetFamilies(INT numSought
, FontFamily
*gpfamilies
, INT
*numFound
) const
676 return SetStatus(NotImplemented
);
680 GetFamilyCount() const
683 lastStatus
= DllExports::GdipGetFontCollectionFamilyCount(nativeFontCollection
, &numFound
);
688 GetLastStatus() const
694 GpFontCollection
*nativeFontCollection
;
695 mutable Status lastStatus
;
698 SetStatus(Status status
) const
706 // FontCollection is not copyable
707 FontCollection(const FontCollection
&);
709 operator=(const FontCollection
&);
712 class FontFamily
: public GdiplusBase
721 FontFamily(const WCHAR
*name
, const FontCollection
*fontCollection
)
723 GpFontCollection
*theCollection
= fontCollection
? fontCollection
->nativeFontCollection
: NULL
;
724 status
= DllExports::GdipCreateFontFamilyFromName(name
, theCollection
, &fontFamily
);
733 static const FontFamily
*
736 FontFamily
*genericMonospace
= new FontFamily();
737 genericMonospace
->status
=
738 DllExports::GdipGetGenericFontFamilyMonospace(genericMonospace
? &genericMonospace
->fontFamily
: NULL
);
739 return genericMonospace
;
742 static const FontFamily
*
745 FontFamily
*genericSansSerif
= new FontFamily();
746 genericSansSerif
->status
=
747 DllExports::GdipGetGenericFontFamilySansSerif(genericSansSerif
? &genericSansSerif
->fontFamily
: NULL
);
748 return genericSansSerif
;
751 static const FontFamily
*
754 FontFamily
*genericSerif
= new FontFamily();
755 genericSerif
->status
=
756 DllExports::GdipGetGenericFontFamilyMonospace(genericSerif
? &genericSerif
->fontFamily
: NULL
);
761 GetCellAscent(INT style
) const
764 SetStatus(DllExports::GdipGetCellAscent(fontFamily
, style
, &CellAscent
));
769 GetCellDescent(INT style
) const
772 SetStatus(DllExports::GdipGetCellDescent(fontFamily
, style
, &CellDescent
));
777 GetEmHeight(INT style
)
780 SetStatus(DllExports::GdipGetEmHeight(fontFamily
, style
, &EmHeight
));
785 GetFamilyName(WCHAR name
[LF_FACESIZE
], WCHAR language
) const
787 return SetStatus(DllExports::GdipGetFamilyName(fontFamily
, name
, language
));
791 GetLastStatus() const
797 GetLineSpacing(INT style
) const
800 SetStatus(DllExports::GdipGetLineSpacing(fontFamily
, style
, &LineSpacing
));
811 IsStyleAvailable(INT style
) const
814 SetStatus(DllExports::GdipIsStyleAvailable(fontFamily
, style
, &StyleAvailable
));
815 return StyleAvailable
;
819 mutable Status status
;
820 GpFontFamily
*fontFamily
;
823 SetStatus(Status status
) const
827 this->status
= status
;
832 class InstalledFontFamily
: public FontFamily
835 InstalledFontFamily()
840 class PrivateFontCollection
: public FontCollection
843 PrivateFontCollection()
845 nativeFontCollection
= NULL
;
846 lastStatus
= DllExports::GdipNewPrivateFontCollection(&nativeFontCollection
);
849 virtual ~PrivateFontCollection()
851 DllExports::GdipDeletePrivateFontCollection(&nativeFontCollection
);
855 AddFontFile(const WCHAR
*filename
)
857 return SetStatus(DllExports::GdipPrivateAddFontFile(nativeFontCollection
, filename
));
861 AddMemoryFont(const VOID
*memory
, INT length
)
863 return SetStatus(DllExports::GdipPrivateAddMemoryFont(nativeFontCollection
, memory
, length
));
867 class Font
: public GdiplusBase
870 friend class FontFamily
;
871 friend class FontCollection
;
872 friend class Graphics
;
874 Font(const FontFamily
*family
, REAL emSize
, INT style
, Unit unit
)
876 status
= DllExports::GdipCreateFont(family
->fontFamily
, emSize
, style
, unit
, &font
);
879 Font(HDC hdc
, const HFONT hfont
)
883 Font(HDC hdc
, const LOGFONTA
*logfont
)
885 status
= DllExports::GdipCreateFontFromLogfontA(hdc
, logfont
, &font
);
888 Font(HDC hdc
, const LOGFONTW
*logfont
)
890 status
= DllExports::GdipCreateFontFromLogfontW(hdc
, logfont
, &font
);
893 Font(const WCHAR
*familyName
, REAL emSize
, INT style
, Unit unit
, const FontCollection
*fontCollection
)
899 status
= DllExports::GdipCreateFontFromDC(hdc
, &font
);
905 Font
*cloneFont
= new Font();
906 cloneFont
->status
= DllExports::GdipCloneFont(font
, cloneFont
? &cloneFont
->font
: NULL
);
911 GetFamily(FontFamily
*family
) const
913 return SetStatus(DllExports::GdipGetFamily(font
, family
? &family
->fontFamily
: NULL
));
917 GetHeight(const Graphics
*graphics
) const
920 SetStatus(DllExports::GdipGetFontHeight(font
, graphics
? getNat(graphics
) : NULL
, &height
));
925 GetHeight(REAL dpi
) const
928 SetStatus(DllExports::GdipGetFontHeightGivenDPI(font
, dpi
, &height
));
933 GetLastStatus() const
939 GetLogFontA(const Graphics
*g
, LOGFONTA
*logfontA
) const
941 return SetStatus(DllExports::GdipGetLogFontA(font
, g
? getNat(g
) : NULL
, logfontA
));
945 GetLogFontW(const Graphics
*g
, LOGFONTW
*logfontW
) const
947 return SetStatus(DllExports::GdipGetLogFontW(font
, g
? getNat(g
) : NULL
, logfontW
));
954 SetStatus(DllExports::GdipGetFontSize(font
, &size
));
962 SetStatus(DllExports::GdipGetFontStyle(font
, &style
));
970 SetStatus(DllExports::GdipGetFontUnit(font
, &unit
));
986 mutable Status status
;
990 SetStatus(Status status
) const
994 this->status
= status
;
999 class Region
: public GdiplusBase
1002 friend class Graphics
;
1003 friend class GraphicsPath
;
1004 friend class Matrix
;
1006 Region(const Rect
&rect
)
1008 status
= DllExports::GdipCreateRegionRectI(&rect
, ®ion
);
1013 status
= DllExports::GdipCreateRegion(®ion
);
1016 Region(const BYTE
*regionData
, INT size
)
1018 status
= DllExports::GdipCreateRegionRgnData(regionData
, size
, ®ion
);
1021 Region(const GraphicsPath
*path
)
1023 status
= DllExports::GdipCreateRegionPath(path
->nativePath
, ®ion
);
1028 status
= DllExports::GdipCreateRegionHrgn(hRgn
, ®ion
);
1031 Region(const RectF
&rect
)
1033 status
= DllExports::GdipCreateRegionRect(&rect
, ®ion
);
1039 Region
*cloneRegion
= new Region();
1040 cloneRegion
->status
= DllExports::GdipCloneRegion(region
, cloneRegion
? &cloneRegion
->region
: NULL
);
1045 Complement(const GraphicsPath
*path
)
1047 GpPath
*thePath
= path
? path
->nativePath
: NULL
;
1048 return SetStatus(DllExports::GdipCombineRegionPath(region
, thePath
, CombineModeComplement
));
1052 Complement(const Region
*region
)
1054 GpRegion
*theRegion
= region
? region
->region
: NULL
;
1055 return SetStatus(DllExports::GdipCombineRegionRegion(this->region
, theRegion
, CombineModeComplement
));
1059 Complement(const Rect
&rect
)
1061 return SetStatus(DllExports::GdipCombineRegionRectI(region
, &rect
, CombineModeComplement
));
1065 Complement(const RectF
&rect
)
1067 return SetStatus(DllExports::GdipCombineRegionRect(region
, &rect
, CombineModeComplement
));
1071 Equals(const Region
*region
, const Graphics
*g
) const
1075 DllExports::GdipIsEqualRegion(this->region
, region
? region
->region
: NULL
, g
? getNat(g
) : NULL
, &result
));
1080 Exclude(const GraphicsPath
*path
)
1082 return SetStatus(DllExports::GdipCombineRegionPath(region
, path
? path
->nativePath
: NULL
, CombineModeExclude
));
1086 Exclude(const RectF
&rect
)
1088 return SetStatus(DllExports::GdipCombineRegionRect(region
, &rect
, CombineModeExclude
));
1092 Exclude(const Rect
&rect
)
1094 return SetStatus(DllExports::GdipCombineRegionRectI(region
, &rect
, CombineModeExclude
));
1098 Exclude(const Region
*region
)
1101 DllExports::GdipCombineRegionRegion(this->region
, region
? region
->region
: NULL
, CombineModeExclude
));
1107 return new Region(hRgn
);
1111 GetBounds(Rect
*rect
, const Graphics
*g
) const
1113 return SetStatus(DllExports::GdipGetRegionBoundsI(region
, g
? getNat(g
) : NULL
, rect
));
1117 GetBounds(RectF
*rect
, const Graphics
*g
) const
1119 return SetStatus(DllExports::GdipGetRegionBounds(region
, g
? getNat(g
) : NULL
, rect
));
1123 GetData(BYTE
*buffer
, UINT bufferSize
, UINT
*sizeFilled
) const
1125 return SetStatus(DllExports::GdipGetRegionData(region
, buffer
, bufferSize
, sizeFilled
));
1132 SetStatus(DllExports::GdipGetRegionDataSize(region
, &bufferSize
));
1137 GetHRGN(const Graphics
*g
) const
1140 SetStatus(DllExports::GdipGetRegionHRgn(region
, g
? getNat(g
) : NULL
, &hRgn
));
1151 GetRegionScans(const Matrix
*matrix
, Rect
*rects
, INT
*count
) const
1153 return SetStatus(DllExports::GdipGetRegionScansI(region
, rects
, count
, matrix
? matrix
->nativeMatrix
: NULL
));
1157 GetRegionScans(const Matrix
*matrix
, RectF
*rects
, INT
*count
) const
1159 return SetStatus(DllExports::GdipGetRegionScans(region
, rects
, count
, matrix
? matrix
->nativeMatrix
: NULL
));
1163 GetRegionScansCount(const Matrix
*matrix
) const
1166 SetStatus(DllExports::GdipGetRegionScansCount(region
, &count
, matrix
? matrix
->nativeMatrix
: NULL
));
1171 Intersect(const Rect
&rect
)
1173 return SetStatus(DllExports::GdipCombineRegionRectI(region
, &rect
, CombineModeIntersect
));
1177 Intersect(const GraphicsPath
*path
)
1179 GpPath
*thePath
= path
? path
->nativePath
: NULL
;
1180 return SetStatus(DllExports::GdipCombineRegionPath(region
, thePath
, CombineModeIntersect
));
1184 Intersect(const RectF
&rect
)
1186 return SetStatus(DllExports::GdipCombineRegionRect(region
, &rect
, CombineModeIntersect
));
1190 Intersect(const Region
*region
)
1193 DllExports::GdipCombineRegionRegion(this->region
, region
? region
->region
: NULL
, CombineModeIntersect
));
1197 IsEmpty(const Graphics
*g
) const
1200 SetStatus(DllExports::GdipIsEmptyRegion(region
, g
? getNat(g
) : NULL
, &result
));
1205 IsInfinite(const Graphics
*g
) const
1208 SetStatus(DllExports::GdipIsInfiniteRegion(region
, g
? getNat(g
) : NULL
, &result
));
1213 IsVisible(const PointF
&point
, const Graphics
*g
) const
1216 SetStatus(DllExports::GdipIsVisibleRegionPoint(region
, point
.X
, point
.Y
, g
? getNat(g
) : NULL
, &result
));
1221 IsVisible(const RectF
&rect
, const Graphics
*g
) const
1224 SetStatus(DllExports::GdipIsVisibleRegionRect(
1225 region
, rect
.X
, rect
.Y
, rect
.Width
, rect
.Height
, g
? getNat(g
) : NULL
, &result
));
1230 IsVisible(const Rect
&rect
, const Graphics
*g
) const
1233 SetStatus(DllExports::GdipIsVisibleRegionRectI(
1234 region
, rect
.X
, rect
.Y
, rect
.Width
, rect
.Height
, g
? getNat(g
) : NULL
, &result
));
1239 IsVisible(INT x
, INT y
, const Graphics
*g
) const
1242 SetStatus(DllExports::GdipIsVisibleRegionPointI(region
, x
, y
, g
? getNat(g
) : NULL
, &result
));
1247 IsVisible(REAL x
, REAL y
, const Graphics
*g
) const
1250 SetStatus(DllExports::GdipIsVisibleRegionPoint(region
, x
, y
, g
? getNat(g
) : NULL
, &result
));
1255 IsVisible(INT x
, INT y
, INT width
, INT height
, const Graphics
*g
) const
1258 SetStatus(DllExports::GdipIsVisibleRegionRectI(region
, x
, y
, width
, height
, g
? getNat(g
) : NULL
, &result
));
1263 IsVisible(const Point
&point
, const Graphics
*g
) const
1266 SetStatus(DllExports::GdipIsVisibleRegionPointI(region
, point
.X
, point
.Y
, g
? getNat(g
) : NULL
, &result
));
1271 IsVisible(REAL x
, REAL y
, REAL width
, REAL height
, const Graphics
*g
) const
1274 SetStatus(DllExports::GdipIsVisibleRegionRect(region
, x
, y
, width
, height
, g
? getNat(g
) : NULL
, &result
));
1281 return SetStatus(DllExports::GdipSetEmpty(region
));
1287 return SetStatus(DllExports::GdipSetInfinite(region
));
1291 Transform(const Matrix
*matrix
)
1293 return SetStatus(DllExports::GdipTransformRegion(region
, matrix
? matrix
->nativeMatrix
: NULL
));
1297 Translate(REAL dx
, REAL dy
)
1299 return SetStatus(DllExports::GdipTranslateRegion(region
, dx
, dy
));
1303 Translate(INT dx
, INT dy
)
1305 return SetStatus(DllExports::GdipTranslateRegionI(region
, dx
, dy
));
1309 Union(const Rect
&rect
)
1311 return SetStatus(DllExports::GdipCombineRegionRectI(region
, &rect
, CombineModeUnion
));
1315 Union(const Region
*region
)
1318 DllExports::GdipCombineRegionRegion(this->region
, region
? region
->region
: NULL
, CombineModeUnion
));
1322 Union(const RectF
&rect
)
1324 return SetStatus(DllExports::GdipCombineRegionRect(region
, &rect
, CombineModeUnion
));
1328 Union(const GraphicsPath
*path
)
1330 return SetStatus(DllExports::GdipCombineRegionPath(region
, path
? path
->nativePath
: NULL
, CombineModeUnion
));
1334 Xor(const GraphicsPath
*path
)
1336 return SetStatus(DllExports::GdipCombineRegionPath(region
, path
? path
->nativePath
: NULL
, CombineModeXor
));
1340 Xor(const RectF
&rect
)
1342 return SetStatus(DllExports::GdipCombineRegionRect(region
, &rect
, CombineModeXor
));
1346 Xor(const Rect
&rect
)
1348 return SetStatus(DllExports::GdipCombineRegionRectI(region
, &rect
, CombineModeXor
));
1352 Xor(const Region
*region
)
1355 DllExports::GdipCombineRegionRegion(this->region
, region
? region
->region
: NULL
, CombineModeXor
));
1359 mutable Status status
;
1363 SetStatus(Status status
) const
1367 this->status
= status
;
1372 class CustomLineCap
: public GdiplusBase
1375 CustomLineCap(const GraphicsPath
*fillPath
, const GraphicsPath
*strokePath
, LineCap baseCap
, REAL baseInset
= 0);
1392 GetStrokeCaps(LineCap
*startCap
, LineCap
*endCap
);
1401 SetBaseCap(LineCap baseCap
);
1404 SetBaseInset(REAL inset
);
1407 SetStrokeCap(LineCap strokeCap
);
1410 SetStrokeCaps(LineCap startCap
, LineCap endCap
);
1413 SetStrokeJoin(LineJoin lineJoin
);
1416 SetWidthScale(IN REAL widthScale
);
1419 GpCustomLineCap
*nativeCap
;
1420 mutable Status lastStatus
;
1422 CustomLineCap() : nativeCap(NULL
), lastStatus(Ok
)
1426 CustomLineCap(GpCustomLineCap
*nativeCap
, Status status
)
1428 lastStatus
= status
;
1429 SetNativeCap(nativeCap
);
1433 SetNativeCap(GpCustomLineCap
*cap
)
1439 SetStatus(Status status
) const
1442 lastStatus
= status
;
1447 // CustomLineCap is not copyable
1448 CustomLineCap(const CustomLineCap
&);
1450 operator=(const CustomLineCap
&);
1453 friend inline GpCustomLineCap
*&
1454 getNat(const CustomLineCap
*cap
)
1456 return const_cast<CustomLineCap
*>(cap
)->nativeCap
;
1461 TextureBrush::GetImage() const
1464 return NULL
; // FIXME
1466 GpImage
*image
= NULL
;
1467 GpTexture
*texture
= GetNativeTexture();
1468 SetStatus(DllExports::GdipGetTextureImage(texture
, &image
));
1469 if (lastStatus
!= Ok
)
1472 Image
*newImage
= new Image(image
, lastStatus
);
1474 DllExports::GdipDisposeImage(image
);
1479 #endif /* _GDIPLUSHEADERS_H */