gdiplus: Partial implementation of GdipCreateHatchBrush.
This commit is contained in:
parent
f9f2e91198
commit
a2a94a49bc
|
@ -51,6 +51,14 @@ GpStatus WINGDIPAPI GdipCloneBrush(GpBrush *brush, GpBrush **clone)
|
||||||
|
|
||||||
memcpy(*clone, brush, sizeof(GpSolidFill));
|
memcpy(*clone, brush, sizeof(GpSolidFill));
|
||||||
|
|
||||||
|
(*clone)->gdibrush = CreateBrushIndirect(&(*clone)->lb);
|
||||||
|
break;
|
||||||
|
case BrushTypeHatchFill:
|
||||||
|
*clone = GdipAlloc(sizeof(GpHatch));
|
||||||
|
if (!*clone) return OutOfMemory;
|
||||||
|
|
||||||
|
memcpy(*clone, brush, sizeof(GpHatch));
|
||||||
|
|
||||||
(*clone)->gdibrush = CreateBrushIndirect(&(*clone)->lb);
|
(*clone)->gdibrush = CreateBrushIndirect(&(*clone)->lb);
|
||||||
break;
|
break;
|
||||||
case BrushTypePathGradient:{
|
case BrushTypePathGradient:{
|
||||||
|
@ -124,6 +132,67 @@ GpStatus WINGDIPAPI GdipCloneBrush(GpBrush *brush, GpBrush **clone)
|
||||||
return Ok;
|
return Ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static LONG HatchStyleToHatch(HatchStyle hatchstyle)
|
||||||
|
{
|
||||||
|
switch (hatchstyle)
|
||||||
|
{
|
||||||
|
case HatchStyleHorizontal: return HS_HORIZONTAL;
|
||||||
|
case HatchStyleVertical: return HS_VERTICAL;
|
||||||
|
case HatchStyleForwardDiagonal: return HS_FDIAGONAL;
|
||||||
|
case HatchStyleBackwardDiagonal: return HS_BDIAGONAL;
|
||||||
|
case HatchStyleCross: return HS_CROSS;
|
||||||
|
case HatchStyleDiagonalCross: return HS_DIAGCROSS;
|
||||||
|
default: return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* GdipCreateHatchBrush [GDIPLUS.@]
|
||||||
|
*/
|
||||||
|
GpStatus WINGDIAPI GdipCreateHatchBrush(HatchStyle hatchstyle, ARGB forecol, ARGB backcol, GpHatch **brush)
|
||||||
|
{
|
||||||
|
COLORREF fgcol = ARGB2COLORREF(forecol);
|
||||||
|
|
||||||
|
TRACE("(%d, %d, %d, %p)\n", hatchstyle, forecol, backcol, brush);
|
||||||
|
|
||||||
|
if(!brush) return InvalidParameter;
|
||||||
|
|
||||||
|
*brush = GdipAlloc(sizeof(GpHatch));
|
||||||
|
if (!*brush) return OutOfMemory;
|
||||||
|
|
||||||
|
switch (hatchstyle)
|
||||||
|
{
|
||||||
|
case HatchStyleHorizontal:
|
||||||
|
case HatchStyleVertical:
|
||||||
|
case HatchStyleForwardDiagonal:
|
||||||
|
case HatchStyleBackwardDiagonal:
|
||||||
|
case HatchStyleCross:
|
||||||
|
case HatchStyleDiagonalCross:
|
||||||
|
/* Brushes that map to BS_HATCHED */
|
||||||
|
(*brush)->brush.lb.lbStyle = BS_HATCHED;
|
||||||
|
(*brush)->brush.lb.lbColor = fgcol;
|
||||||
|
(*brush)->brush.lb.lbHatch = HatchStyleToHatch(hatchstyle);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
FIXME("Unimplemented hatch style %d\n", hatchstyle);
|
||||||
|
|
||||||
|
(*brush)->brush.lb.lbStyle = BS_SOLID;
|
||||||
|
(*brush)->brush.lb.lbColor = fgcol;
|
||||||
|
(*brush)->brush.lb.lbHatch = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
(*brush)->brush.gdibrush = CreateBrushIndirect(&(*brush)->brush.lb);
|
||||||
|
(*brush)->brush.bt = BrushTypeHatchFill;
|
||||||
|
(*brush)->forecol = forecol;
|
||||||
|
(*brush)->backcol = backcol;
|
||||||
|
(*brush)->hatchstyle = hatchstyle;
|
||||||
|
|
||||||
|
return Ok;
|
||||||
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* GdipCreateLineBrush [GDIPLUS.@]
|
* GdipCreateLineBrush [GDIPLUS.@]
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -96,7 +96,7 @@
|
||||||
@ stdcall GdipCreateHBITMAPFromBitmap(ptr ptr long)
|
@ stdcall GdipCreateHBITMAPFromBitmap(ptr ptr long)
|
||||||
@ stub GdipCreateHICONFromBitmap
|
@ stub GdipCreateHICONFromBitmap
|
||||||
@ stdcall GdipCreateHalftonePalette()
|
@ stdcall GdipCreateHalftonePalette()
|
||||||
@ stub GdipCreateHatchBrush
|
@ stdcall GdipCreateHatchBrush(long long long ptr)
|
||||||
@ stdcall GdipCreateImageAttributes(ptr)
|
@ stdcall GdipCreateImageAttributes(ptr)
|
||||||
@ stdcall GdipCreateLineBrush(ptr ptr long long long ptr)
|
@ stdcall GdipCreateLineBrush(ptr ptr long long long ptr)
|
||||||
@ stdcall GdipCreateLineBrushFromRect(ptr long long long long ptr)
|
@ stdcall GdipCreateLineBrushFromRect(ptr long long long long ptr)
|
||||||
|
|
|
@ -111,6 +111,13 @@ struct GpBrush{
|
||||||
LOGBRUSH lb;
|
LOGBRUSH lb;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct GpHatch{
|
||||||
|
GpBrush brush;
|
||||||
|
HatchStyle hatchstyle;
|
||||||
|
ARGB forecol;
|
||||||
|
ARGB backcol;
|
||||||
|
};
|
||||||
|
|
||||||
struct GpSolidFill{
|
struct GpSolidFill{
|
||||||
GpBrush brush;
|
GpBrush brush;
|
||||||
ARGB color;
|
ARGB color;
|
||||||
|
|
|
@ -357,6 +357,67 @@ enum MetafileFrameUnit
|
||||||
MetafileFrameUnitGdi
|
MetafileFrameUnitGdi
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum HatchStyle
|
||||||
|
{
|
||||||
|
HatchStyleHorizontal = 0,
|
||||||
|
HatchStyleVertical = 1,
|
||||||
|
HatchStyleForwardDiagonal = 2,
|
||||||
|
HatchStyleBackwardDiagonal = 3,
|
||||||
|
HatchStyleCross = 4,
|
||||||
|
HatchStyleDiagonalCross = 5,
|
||||||
|
HatchStyle05Percent = 6,
|
||||||
|
HatchStyle10Percent = 7,
|
||||||
|
HatchStyle20Percent = 8,
|
||||||
|
HatchStyle25Percent = 9,
|
||||||
|
HatchStyle30Percent = 10,
|
||||||
|
HatchStyle40Percent = 11,
|
||||||
|
HatchStyle50Percent = 12,
|
||||||
|
HatchStyle60Percent = 13,
|
||||||
|
HatchStyle70Percent = 14,
|
||||||
|
HatchStyle75Percent = 15,
|
||||||
|
HatchStyle80Percent = 16,
|
||||||
|
HatchStyle90Percent = 17,
|
||||||
|
HatchStyleLightDownwardDiagonal = 18,
|
||||||
|
HatchStyleLightUpwardDiagonal = 19,
|
||||||
|
HatchStyleDarkDownwardDiagonal = 20,
|
||||||
|
HatchStyleDarkUpwardDiagonal = 21,
|
||||||
|
HatchStyleWideDownwardDiagonal = 22,
|
||||||
|
HatchStyleWideUpwardDiagonal = 23,
|
||||||
|
HatchStyleLightVertical = 24,
|
||||||
|
HatchStyleLightHorizontal = 25,
|
||||||
|
HatchStyleNarrowVertical = 26,
|
||||||
|
HatchStyleNarrowHorizontal = 27,
|
||||||
|
HatchStyleDarkVertical = 28,
|
||||||
|
HatchStyleDarkHorizontal = 29,
|
||||||
|
HatchStyleDashedDownwardDiagonal = 30,
|
||||||
|
HatchStyleDashedUpwardDiagonal = 31,
|
||||||
|
HatchStyleDashedHorizontal = 32,
|
||||||
|
HatchStyleDashedVertical = 33,
|
||||||
|
HatchStyleSmallConfetti = 34,
|
||||||
|
HatchStyleLargeConfetti = 35,
|
||||||
|
HatchStyleZigZag = 36,
|
||||||
|
HatchStyleWave = 37,
|
||||||
|
HatchStyleDiagonalBrick = 38,
|
||||||
|
HatchStyleHorizontalBrick = 39,
|
||||||
|
HatchStyleWeave = 40,
|
||||||
|
HatchStylePlaid = 41,
|
||||||
|
HatchStyleDivot = 42,
|
||||||
|
HatchStyleDottedGrid = 43,
|
||||||
|
HatchStyleDottedDiamond = 44,
|
||||||
|
HatchStyleShingle = 45,
|
||||||
|
HatchStyleTrellis = 46,
|
||||||
|
HatchStyleSphere = 47,
|
||||||
|
HatchStyleSmallGrid = 48,
|
||||||
|
HatchStyleSmallCheckerBoard = 49,
|
||||||
|
HatchStyleLargeCheckerBoard = 50,
|
||||||
|
HatchStyleOutlinedDiamond = 51,
|
||||||
|
HatchStyleSolidDiamond = 52,
|
||||||
|
HatchStyleTotal = 53,
|
||||||
|
HatchStyleLargeGrid = HatchStyleCross,
|
||||||
|
HatchStyleMin = HatchStyleHorizontal,
|
||||||
|
HatchStyleMax = HatchStyleTotal - 1
|
||||||
|
};
|
||||||
|
|
||||||
#ifndef __cplusplus
|
#ifndef __cplusplus
|
||||||
|
|
||||||
typedef enum Unit Unit;
|
typedef enum Unit Unit;
|
||||||
|
@ -395,6 +456,7 @@ typedef enum CoordinateSpace CoordinateSpace;
|
||||||
typedef enum GpTestControlEnum GpTestControlEnum;
|
typedef enum GpTestControlEnum GpTestControlEnum;
|
||||||
typedef enum MetafileFrameUnit MetafileFrameUnit;
|
typedef enum MetafileFrameUnit MetafileFrameUnit;
|
||||||
typedef enum PenType PenType;
|
typedef enum PenType PenType;
|
||||||
|
typedef enum HatchStyle HatchStyle;
|
||||||
|
|
||||||
#endif /* end of c typedefs */
|
#endif /* end of c typedefs */
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
|
|
||||||
class GpGraphics {};
|
class GpGraphics {};
|
||||||
class GpBrush {};
|
class GpBrush {};
|
||||||
|
class GpHatch : public GpBrush {};
|
||||||
class GpSolidFill : public GpBrush {};
|
class GpSolidFill : public GpBrush {};
|
||||||
class GpPath {};
|
class GpPath {};
|
||||||
class GpMatrix {};
|
class GpMatrix {};
|
||||||
|
@ -49,6 +50,7 @@ class CGpEffect {};
|
||||||
typedef struct GpGraphics GpGraphics;
|
typedef struct GpGraphics GpGraphics;
|
||||||
typedef struct GpPen GpPen;
|
typedef struct GpPen GpPen;
|
||||||
typedef struct GpBrush GpBrush;
|
typedef struct GpBrush GpBrush;
|
||||||
|
typedef struct GpHatch GpHatch;
|
||||||
typedef struct GpSolidFill GpSolidFill;
|
typedef struct GpSolidFill GpSolidFill;
|
||||||
typedef struct GpPath GpPath;
|
typedef struct GpPath GpPath;
|
||||||
typedef struct GpMatrix GpMatrix;
|
typedef struct GpMatrix GpMatrix;
|
||||||
|
|
Loading…
Reference in New Issue