- Sync gdiplus with Wine head
[reactos.git] / reactos / dll / win32 / gdiplus / gdiplus_private.h
index 80fc5a6..658f15e 100644 (file)
@@ -52,6 +52,13 @@ extern void calc_curve_bezier(CONST GpPointF *pts, REAL tension, REAL *x1,
 extern void calc_curve_bezier_endp(REAL xend, REAL yend, REAL xadj, REAL yadj,
     REAL tension, REAL *x, REAL *y);
 
 extern void calc_curve_bezier_endp(REAL xend, REAL yend, REAL xadj, REAL yadj,
     REAL tension, REAL *x, REAL *y);
 
+extern BOOL lengthen_path(GpPath *path, INT len);
+
+extern GpStatus trace_path(GpGraphics *graphics, GpPath *path);
+
+typedef struct region_element region_element;
+extern inline void delete_element(region_element *element);
+
 static inline INT roundr(REAL x)
 {
     return (INT) floor(x + 0.5);
 static inline INT roundr(REAL x)
 {
     return (INT) floor(x + 0.5);
@@ -93,6 +100,9 @@ struct GpGraphics{
     GpUnit unit;    /* page unit */
     REAL scale;     /* page scale */
     GpMatrix * worldtrans; /* world transform */
     GpUnit unit;    /* page unit */
     REAL scale;     /* page scale */
     GpMatrix * worldtrans; /* world transform */
+    BOOL busy;      /* hdc handle obtained by GdipGetDC */
+    GpRegion *clip;
+    UINT textcontrast; /* not used yet. get/set only */
 };
 
 struct GpBrush{
 };
 
 struct GpBrush{
@@ -101,6 +111,13 @@ struct GpBrush{
     LOGBRUSH lb;
 };
 
     LOGBRUSH lb;
 };
 
+struct GpHatch{
+    GpBrush brush;
+    HatchStyle hatchstyle;
+    ARGB forecol;
+    ARGB backcol;
+};
+
 struct GpSolidFill{
     GpBrush brush;
     ARGB color;
 struct GpSolidFill{
     GpBrush brush;
     ARGB color;
@@ -131,6 +148,8 @@ struct GpLineGradient{
 
 struct GpTexture{
     GpBrush brush;
 
 struct GpTexture{
     GpBrush brush;
+    GpMatrix *transform;
+    WrapMode wrap;  /* not used yet */
 };
 
 struct GpPath{
 };
 
 struct GpPath{
@@ -160,6 +179,10 @@ struct GpCustomLineCap{
     REAL scale;
 };
 
     REAL scale;
 };
 
+struct GpAdustableArrowCap{
+    GpCustomLineCap cap;
+};
+
 struct GpImage{
     IPicture* picture;
     ImageType type;
 struct GpImage{
     IPicture* picture;
     ImageType type;
@@ -182,6 +205,10 @@ struct GpBitmap{
     BYTE *bitmapbits;   /* pointer to the buffer we passed in BitmapLockBits */
 };
 
     BYTE *bitmapbits;   /* pointer to the buffer we passed in BitmapLockBits */
 };
 
+struct GpCachedBitmap{
+    GpImage *image;
+};
+
 struct GpImageAttributes{
     WrapMode wrap;
 };
 struct GpImageAttributes{
     WrapMode wrap;
 };
@@ -189,6 +216,8 @@ struct GpImageAttributes{
 struct GpFont{
     LOGFONTW lfw;
     REAL emSize;
 struct GpFont{
     LOGFONTW lfw;
     REAL emSize;
+    UINT height;
+    LONG line_spacing;
     Unit unit;
 };
 
     Unit unit;
 };
 
@@ -207,7 +236,8 @@ struct GpStringFormat{
 };
 
 struct GpFontCollection{
 };
 
 struct GpFontCollection{
-    GpFontFamily* FontFamilies;
+    GpFontFamily **FontFamilies;
+    INT count;
 };
 
 struct GpFontFamily{
 };
 
 struct GpFontFamily{
@@ -215,7 +245,16 @@ struct GpFontFamily{
     WCHAR FamilyName[LF_FACESIZE];
 };
 
     WCHAR FamilyName[LF_FACESIZE];
 };
 
-typedef struct region_element
+/* internal use */
+typedef enum RegionType
+{
+    RegionDataRect          = 0x10000000,
+    RegionDataPath          = 0x10000001,
+    RegionDataEmptyRect     = 0x10000002,
+    RegionDataInfiniteRect  = 0x10000003,
+} RegionType;
+
+struct region_element
 {
     DWORD type; /* Rectangle, Path, SpecialRectangle, or CombineMode */
     union
 {
     DWORD type; /* Rectangle, Path, SpecialRectangle, or CombineMode */
     union
@@ -238,7 +277,7 @@ typedef struct region_element
             struct region_element *right; /* what *left was combined with */
         } combine;
     } elementdata;
             struct region_element *right; /* what *left was combined with */
         } combine;
     } elementdata;
-} region_element;
+};
 
 struct GpRegion{
     struct
 
 struct GpRegion{
     struct