2010-07-08 Markus Koenig <basilo@users.sourceforge.net>
* include/gdiplus.h: New file. * include/gdiplus/gdiplus.h: New file. * include/gdiplus/gdiplusbase.h: New file. * include/gdiplus/gdiplusbrush.h: New file. * include/gdiplus/gdipluscolor.h: New file. * include/gdiplus/gdipluscolormatrix.h: New file. * include/gdiplus/gdipluseffects.h: New file. * include/gdiplus/gdiplusenums.h: New file. * include/gdiplus/gdiplusflat.h: New file. * include/gdiplus/gdiplusgpstubs.h: New file. * include/gdiplus/gdiplusgraphics.h: New file. * include/gdiplus/gdiplusheaders.h: New file. * include/gdiplus/gdiplusimageattributes.h: New file. * include/gdiplus/gdiplusimagecodec.h: New file. * include/gdiplus/gdiplusimaging.h: New file. * include/gdiplus/gdiplusimpl.h: New file. * include/gdiplus/gdiplusinit.h: New file. * include/gdiplus/gdipluslinecaps.h: New file. * include/gdiplus/gdiplusmatrix.h: New file. * include/gdiplus/gdiplusmem.h: New file. * include/gdiplus/gdiplusmetafile.h: New file. * include/gdiplus/gdiplusmetaheader.h: New file. * include/gdiplus/gdipluspath.h: New file. * include/gdiplus/gdipluspen.h: New file. * include/gdiplus/gdipluspixelformats.h: New file. * include/gdiplus/gdiplusstringformat.h: New file. * include/gdiplus/gdiplustypes.h: New file. * lib/gdiplus.c: New file containing GDI+ variable definitions and GUIDs. * lib/gdiplus.def: New file. * lib/Makefile.in: Add gdiplus.o to EXTRA_OBJS, add gdiplus.c to SOURCES. * lib/test.c: Include gdiplus.h.
This commit is contained in:
parent
975a85f42c
commit
cc077128d3
|
@ -1,3 +1,39 @@
|
|||
2010-07-08 Markus Koenig <basilo@users.sourceforge.net>
|
||||
|
||||
* include/gdiplus.h: New file.
|
||||
* include/gdiplus/gdiplus.h: New file.
|
||||
* include/gdiplus/gdiplusbase.h: New file.
|
||||
* include/gdiplus/gdiplusbrush.h: New file.
|
||||
* include/gdiplus/gdipluscolor.h: New file.
|
||||
* include/gdiplus/gdipluscolormatrix.h: New file.
|
||||
* include/gdiplus/gdipluseffects.h: New file.
|
||||
* include/gdiplus/gdiplusenums.h: New file.
|
||||
* include/gdiplus/gdiplusflat.h: New file.
|
||||
* include/gdiplus/gdiplusgpstubs.h: New file.
|
||||
* include/gdiplus/gdiplusgraphics.h: New file.
|
||||
* include/gdiplus/gdiplusheaders.h: New file.
|
||||
* include/gdiplus/gdiplusimageattributes.h: New file.
|
||||
* include/gdiplus/gdiplusimagecodec.h: New file.
|
||||
* include/gdiplus/gdiplusimaging.h: New file.
|
||||
* include/gdiplus/gdiplusimpl.h: New file.
|
||||
* include/gdiplus/gdiplusinit.h: New file.
|
||||
* include/gdiplus/gdipluslinecaps.h: New file.
|
||||
* include/gdiplus/gdiplusmatrix.h: New file.
|
||||
* include/gdiplus/gdiplusmem.h: New file.
|
||||
* include/gdiplus/gdiplusmetafile.h: New file.
|
||||
* include/gdiplus/gdiplusmetaheader.h: New file.
|
||||
* include/gdiplus/gdipluspath.h: New file.
|
||||
* include/gdiplus/gdipluspen.h: New file.
|
||||
* include/gdiplus/gdipluspixelformats.h: New file.
|
||||
* include/gdiplus/gdiplusstringformat.h: New file.
|
||||
* include/gdiplus/gdiplustypes.h: New file.
|
||||
* lib/gdiplus.c: New file containing GDI+ variable definitions
|
||||
and GUIDs.
|
||||
* lib/gdiplus.def: New file.
|
||||
* lib/Makefile.in: Add gdiplus.o to EXTRA_OBJS,
|
||||
add gdiplus.c to SOURCES.
|
||||
* lib/test.c: Include gdiplus.h.
|
||||
|
||||
2010-06-28 Rick Rankin <rrankin1424-mingw@yahoo.com>
|
||||
|
||||
* include/psapi.h (PROCESS_MEMORY_COUNTERS_EX, PERFORMANCE_INFORMATION,
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
#include "gdiplus/gdiplus.h"
|
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* gdiplus.h
|
||||
*
|
||||
* GDI+ main header
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_H
|
||||
#define __GDIPLUS_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#ifndef RC_INVOKED
|
||||
|
||||
#include <stddef.h>
|
||||
#include <math.h>
|
||||
#include <windef.h>
|
||||
#include <wingdi.h>
|
||||
|
||||
#include <basetyps.h>
|
||||
typedef _COM_interface IStream IStream;
|
||||
typedef _COM_interface IDirectDrawSurface7 IDirectDrawSurface7;
|
||||
|
||||
#ifdef __cplusplus
|
||||
namespace Gdiplus {
|
||||
#endif
|
||||
|
||||
typedef float REAL;
|
||||
typedef SHORT INT16;
|
||||
typedef WORD UINT16;
|
||||
|
||||
#include "gdiplusenums.h"
|
||||
#include "gdiplustypes.h"
|
||||
#include "gdiplusgpstubs.h"
|
||||
#include "gdiplusimaging.h"
|
||||
#include "gdiplusinit.h"
|
||||
#include "gdiplusmem.h"
|
||||
#include "gdiplusmetaheader.h"
|
||||
#include "gdipluspixelformats.h"
|
||||
#include "gdipluscolor.h"
|
||||
#include "gdipluscolormatrix.h"
|
||||
#include "gdiplusflat.h"
|
||||
#include "gdipluseffects.h"
|
||||
#include "gdiplusimagecodec.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
#include "gdiplusbase.h"
|
||||
#include "gdiplusheaders.h"
|
||||
#include "gdiplusimageattributes.h"
|
||||
#include "gdiplusmatrix.h"
|
||||
#include "gdiplusbrush.h"
|
||||
#include "gdiplusmetafile.h"
|
||||
#include "gdipluspen.h"
|
||||
#include "gdiplusstringformat.h"
|
||||
#include "gdipluspath.h"
|
||||
#include "gdiplusgraphics.h"
|
||||
#include "gdipluslinecaps.h"
|
||||
#include "gdiplusimpl.h"
|
||||
|
||||
} /* namespace Gdiplus */
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* !RC_INVOKED */
|
||||
|
||||
#endif /* __GDIPLUS_H */
|
|
@ -0,0 +1,54 @@
|
|||
/*
|
||||
* gdiplusbase.h
|
||||
*
|
||||
* GDI+ base class
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_BASE_H
|
||||
#define __GDIPLUS_BASE_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error "A C++ compiler is required to include gdiplusbase.h."
|
||||
#endif
|
||||
|
||||
class GdiplusBase
|
||||
{
|
||||
public:
|
||||
static void* operator new(size_t in_size)
|
||||
{
|
||||
return DllExports::GdipAlloc(in_size);
|
||||
}
|
||||
static void* operator new[](size_t in_size)
|
||||
{
|
||||
return DllExports::GdipAlloc(in_size);
|
||||
}
|
||||
static void operator delete(void *in_pVoid)
|
||||
{
|
||||
DllExports::GdipFree(in_pVoid);
|
||||
}
|
||||
static void operator delete[](void *in_pVoid)
|
||||
{
|
||||
DllExports::GdipFree(in_pVoid);
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* __GDIPLUS_BASE_H */
|
|
@ -0,0 +1,606 @@
|
|||
/*
|
||||
* gdiplusbrush.h
|
||||
*
|
||||
* GDI+ brush classes
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_BRUSH_H
|
||||
#define __GDIPLUS_BRUSH_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error "A C++ compiler is required to include gdiplusbrush.h."
|
||||
#endif
|
||||
|
||||
class Brush: public GdiplusBase
|
||||
{
|
||||
friend class HatchBrush;
|
||||
friend class LinearGradientBrush;
|
||||
friend class PathGradientBrush;
|
||||
friend class SolidBrush;
|
||||
friend class TextureBrush;
|
||||
friend class Graphics;
|
||||
friend class Pen;
|
||||
|
||||
public:
|
||||
virtual ~Brush()
|
||||
{
|
||||
DllExports::GdipDeleteBrush(nativeBrush);
|
||||
}
|
||||
virtual Brush* Clone() const // each subclass must implement this
|
||||
{
|
||||
lastStatus = NotImplemented;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Status GetLastStatus() const
|
||||
{
|
||||
Status result = lastStatus;
|
||||
lastStatus = Ok;
|
||||
return result;
|
||||
}
|
||||
BrushType GetType() const
|
||||
{
|
||||
BrushType result = BrushTypeSolidColor;
|
||||
updateStatus(DllExports::GdipGetBrushType(nativeBrush, &result));
|
||||
return result;
|
||||
}
|
||||
|
||||
private:
|
||||
Brush(): nativeBrush(NULL), lastStatus(Ok) {}
|
||||
Brush(GpBrush *brush, Status status):
|
||||
nativeBrush(brush), lastStatus(status) {}
|
||||
Brush(const Brush& brush);
|
||||
Brush& operator=(const Brush&);
|
||||
|
||||
Status updateStatus(Status newStatus) const
|
||||
{
|
||||
if (newStatus != Ok) lastStatus = newStatus;
|
||||
return newStatus;
|
||||
}
|
||||
|
||||
GpBrush *nativeBrush;
|
||||
mutable Status lastStatus;
|
||||
};
|
||||
|
||||
class HatchBrush: public Brush
|
||||
{
|
||||
public:
|
||||
HatchBrush(HatchStyle hatchStyle,
|
||||
const Color& foreColor,
|
||||
const Color& backColor = Color())
|
||||
{
|
||||
GpHatch *nativeHatch = NULL;
|
||||
lastStatus = DllExports::GdipCreateHatchBrush(hatchStyle,
|
||||
foreColor.GetValue(), backColor.GetValue(),
|
||||
&nativeHatch);
|
||||
nativeBrush = nativeHatch;
|
||||
}
|
||||
virtual HatchBrush* Clone() const
|
||||
{
|
||||
GpBrush *cloneBrush = NULL;
|
||||
Status status = updateStatus(DllExports::GdipCloneBrush(
|
||||
nativeBrush, &cloneBrush));
|
||||
if (status == Ok) {
|
||||
HatchBrush *result =
|
||||
new HatchBrush(cloneBrush, lastStatus);
|
||||
if (!result) {
|
||||
DllExports::GdipDeleteBrush(cloneBrush);
|
||||
updateStatus(OutOfMemory);
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
Status GetBackgroundColor(Color *color) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetHatchBackgroundColor(
|
||||
(GpHatch*) nativeBrush,
|
||||
color ? &color->Value : NULL));
|
||||
}
|
||||
Status GetForegroundColor(Color *color) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetHatchForegroundColor(
|
||||
(GpHatch*) nativeBrush,
|
||||
color ? &color->Value : NULL));
|
||||
}
|
||||
HatchStyle GetHatchStyle() const
|
||||
{
|
||||
HatchStyle result;
|
||||
updateStatus(DllExports::GdipGetHatchStyle(
|
||||
(GpHatch*) nativeBrush, &result));
|
||||
return result;
|
||||
}
|
||||
|
||||
private:
|
||||
HatchBrush(GpBrush *brush, Status status): Brush(brush, status) {}
|
||||
HatchBrush(const HatchBrush& brush);
|
||||
HatchBrush& operator=(const HatchBrush&);
|
||||
};
|
||||
|
||||
class LinearGradientBrush: public Brush
|
||||
{
|
||||
public:
|
||||
LinearGradientBrush(const PointF& point1, const PointF& point2,
|
||||
const Color& color1, const Color& color2)
|
||||
{
|
||||
GpLineGradient *nativeLineGradient = NULL;
|
||||
lastStatus = DllExports::GdipCreateLineBrush(
|
||||
&point1, &point2,
|
||||
color1.GetValue(), color2.GetValue(),
|
||||
WrapModeTile, &nativeLineGradient);
|
||||
nativeBrush = nativeLineGradient;
|
||||
}
|
||||
LinearGradientBrush(const Point& point1, const Point& point2,
|
||||
const Color& color1, const Color& color2)
|
||||
{
|
||||
GpLineGradient *nativeLineGradient = NULL;
|
||||
lastStatus = DllExports::GdipCreateLineBrushI(
|
||||
&point1, &point2,
|
||||
color1.GetValue(), color2.GetValue(),
|
||||
WrapModeTile, &nativeLineGradient);
|
||||
nativeBrush = nativeLineGradient;
|
||||
}
|
||||
LinearGradientBrush(const RectF& rect, const Color& color1,
|
||||
const Color& color2, LinearGradientMode mode)
|
||||
{
|
||||
GpLineGradient *nativeLineGradient = NULL;
|
||||
lastStatus = DllExports::GdipCreateLineBrushFromRect(
|
||||
&rect, color1.GetValue(), color2.GetValue(),
|
||||
mode, WrapModeTile, &nativeLineGradient);
|
||||
nativeBrush = nativeLineGradient;
|
||||
}
|
||||
LinearGradientBrush(const Rect& rect, const Color& color1,
|
||||
const Color& color2, LinearGradientMode mode)
|
||||
{
|
||||
GpLineGradient *nativeLineGradient = NULL;
|
||||
lastStatus = DllExports::GdipCreateLineBrushFromRectI(
|
||||
&rect, color1.GetValue(), color2.GetValue(),
|
||||
mode, WrapModeTile, &nativeLineGradient);
|
||||
nativeBrush = nativeLineGradient;
|
||||
}
|
||||
LinearGradientBrush(const RectF& rect, const Color& color1,
|
||||
const Color& color2, REAL angle,
|
||||
BOOL isAngleScalable = FALSE)
|
||||
{
|
||||
GpLineGradient *nativeLineGradient = NULL;
|
||||
lastStatus = DllExports::GdipCreateLineBrushFromRectWithAngle(
|
||||
&rect, color1.GetValue(), color2.GetValue(),
|
||||
angle, isAngleScalable, WrapModeTile,
|
||||
&nativeLineGradient);
|
||||
nativeBrush = nativeLineGradient;
|
||||
}
|
||||
LinearGradientBrush(const Rect& rect, const Color& color1,
|
||||
const Color& color2, REAL angle,
|
||||
BOOL isAngleScalable = FALSE)
|
||||
{
|
||||
GpLineGradient *nativeLineGradient = NULL;
|
||||
lastStatus = DllExports::GdipCreateLineBrushFromRectWithAngleI(
|
||||
&rect, color1.GetValue(), color2.GetValue(),
|
||||
angle, isAngleScalable, WrapModeTile,
|
||||
&nativeLineGradient);
|
||||
nativeBrush = nativeLineGradient;
|
||||
}
|
||||
virtual LinearGradientBrush* Clone() const
|
||||
{
|
||||
GpBrush *cloneBrush = NULL;
|
||||
Status status = updateStatus(DllExports::GdipCloneBrush(
|
||||
nativeBrush, &cloneBrush));
|
||||
if (status == Ok) {
|
||||
LinearGradientBrush *result =
|
||||
new LinearGradientBrush(cloneBrush, lastStatus);
|
||||
if (!result) {
|
||||
DllExports::GdipDeleteBrush(cloneBrush);
|
||||
updateStatus(OutOfMemory);
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
Status GetBlend(REAL *blendFactors, REAL *blendPositions,
|
||||
INT count) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetLineBlend(
|
||||
(GpLineGradient*) nativeBrush,
|
||||
blendFactors, blendPositions, count));
|
||||
}
|
||||
INT GetBlendCount() const
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipGetLineBlendCount(
|
||||
(GpLineGradient*) nativeBrush, &result));
|
||||
return result;
|
||||
}
|
||||
BOOL GetGammaCorrection() const
|
||||
{
|
||||
BOOL result = FALSE;
|
||||
updateStatus(DllExports::GdipGetLineGammaCorrection(
|
||||
(GpLineGradient*) nativeBrush, &result));
|
||||
return result;
|
||||
}
|
||||
INT GetInterpolationColorCount() const
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipGetLinePresetBlendCount(
|
||||
(GpLineGradient*) nativeBrush, &result));
|
||||
return result;
|
||||
}
|
||||
Status GetInterpolationColors(Color *presetColors,
|
||||
REAL *blendPositions, INT count) const
|
||||
{
|
||||
if (!presetColors || count <= 0)
|
||||
return lastStatus = InvalidParameter;
|
||||
|
||||
ARGB *presetArgb =
|
||||
(ARGB*) DllExports::GdipAlloc(count * sizeof(ARGB));
|
||||
if (!presetArgb)
|
||||
return lastStatus = OutOfMemory;
|
||||
|
||||
Status status = updateStatus(DllExports::GdipGetLinePresetBlend(
|
||||
(GpLineGradient*) nativeBrush, presetArgb,
|
||||
blendPositions, count));
|
||||
for (INT i = 0; i < count; ++i) {
|
||||
presetColors[i].SetValue(presetArgb[i]);
|
||||
}
|
||||
DllExports::GdipFree((void*) presetArgb);
|
||||
return status;
|
||||
}
|
||||
Status GetLinearColors(Color *colors) const
|
||||
{
|
||||
if (!colors) return lastStatus = InvalidParameter;
|
||||
|
||||
ARGB colorsArgb[2];
|
||||
Status status = updateStatus(DllExports::GdipGetLineColors(
|
||||
(GpLineGradient*) nativeBrush, colorsArgb));
|
||||
colors[0].SetValue(colorsArgb[0]);
|
||||
colors[1].SetValue(colorsArgb[1]);
|
||||
return status;
|
||||
}
|
||||
Status GetRectangle(RectF *rect) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetLineRect(
|
||||
(GpLineGradient*) nativeBrush, rect));
|
||||
}
|
||||
Status GetRectangle(Rect *rect) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetLineRectI(
|
||||
(GpLineGradient*) nativeBrush, rect));
|
||||
}
|
||||
Status GetTransform(Matrix *matrix) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetLineTransform(
|
||||
(GpLineGradient*) nativeBrush,
|
||||
matrix ? matrix->nativeMatrix : NULL));
|
||||
}
|
||||
WrapMode GetWrapMode() const
|
||||
{
|
||||
WrapMode wrapMode = WrapModeTile;
|
||||
updateStatus(DllExports::GdipGetLineWrapMode(
|
||||
(GpLineGradient*) nativeBrush, &wrapMode));
|
||||
return wrapMode;
|
||||
}
|
||||
Status MultiplyTransform(const Matrix *matrix,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipMultiplyLineTransform(
|
||||
(GpLineGradient*) nativeBrush,
|
||||
matrix ? matrix->nativeMatrix : NULL, order));
|
||||
}
|
||||
Status ResetTransform()
|
||||
{
|
||||
return updateStatus(DllExports::GdipResetLineTransform(
|
||||
(GpLineGradient*) nativeBrush));
|
||||
}
|
||||
Status RotateTranform(REAL angle, MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipRotateLineTransform(
|
||||
(GpLineGradient*) nativeBrush, angle, order));
|
||||
}
|
||||
Status ScaleTransform(REAL sx, REAL sy,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipScaleLineTransform(
|
||||
(GpLineGradient*) nativeBrush, sx, sy, order));
|
||||
}
|
||||
Status SetBlend(const REAL *blendFactors,
|
||||
const REAL *blendPositions, INT count)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetLineBlend(
|
||||
(GpLineGradient*) nativeBrush,
|
||||
blendFactors, blendPositions, count));
|
||||
}
|
||||
Status SetBlendBellShape(REAL focus, REAL scale = 1.0f)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetLineSigmaBlend(
|
||||
(GpLineGradient*) nativeBrush,
|
||||
focus, scale));
|
||||
}
|
||||
Status SetBlendTriangularShape(REAL focus, REAL scale = 1.0f)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetLineLinearBlend(
|
||||
(GpLineGradient*) nativeBrush,
|
||||
focus, scale));
|
||||
}
|
||||
Status SetGammaCorrection(BOOL useGammaCorrection)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetLineGammaCorrection(
|
||||
(GpLineGradient*) nativeBrush,
|
||||
useGammaCorrection));
|
||||
}
|
||||
Status SetInterpolationColors(const Color *presetColors,
|
||||
const REAL *blendPositions, INT count)
|
||||
{
|
||||
if (!presetColors || count < 0)
|
||||
return lastStatus = InvalidParameter;
|
||||
|
||||
ARGB *presetArgb =
|
||||
(ARGB*) DllExports::GdipAlloc(count * sizeof(ARGB));
|
||||
if (!presetArgb)
|
||||
return lastStatus = OutOfMemory;
|
||||
for (INT i = 0; i < count; ++i) {
|
||||
presetArgb[i] = presetColors[i].GetValue();
|
||||
}
|
||||
|
||||
Status status = updateStatus(DllExports::GdipSetLinePresetBlend(
|
||||
(GpLineGradient*) nativeBrush,
|
||||
presetArgb, blendPositions, count));
|
||||
DllExports::GdipFree((void*) presetArgb);
|
||||
return status;
|
||||
}
|
||||
Status SetLinearColors(const Color& color1, const Color& color2)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetLineColors(
|
||||
(GpLineGradient*) nativeBrush,
|
||||
color1.GetValue(), color2.GetValue()));
|
||||
}
|
||||
Status SetTransform(const Matrix *matrix)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetLineTransform(
|
||||
(GpLineGradient*) nativeBrush,
|
||||
matrix ? matrix->nativeMatrix : NULL));
|
||||
}
|
||||
Status SetWrapMode(WrapMode wrapMode)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetLineWrapMode(
|
||||
(GpLineGradient*) nativeBrush, wrapMode));
|
||||
}
|
||||
Status TranslateTransform(REAL dx, REAL dy,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipTranslateLineTransform(
|
||||
(GpLineGradient*) nativeBrush, dx, dy, order));
|
||||
}
|
||||
|
||||
private:
|
||||
LinearGradientBrush(GpBrush *brush, Status status): Brush(brush, status) {}
|
||||
LinearGradientBrush(const LinearGradientBrush& brush);
|
||||
LinearGradientBrush& operator=(const LinearGradientBrush&);
|
||||
};
|
||||
|
||||
class SolidBrush: public Brush
|
||||
{
|
||||
public:
|
||||
SolidBrush(const Color& color)
|
||||
{
|
||||
GpSolidFill *nativeSolidFill = NULL;
|
||||
lastStatus = DllExports::GdipCreateSolidFill(
|
||||
color.GetValue(), &nativeSolidFill);
|
||||
nativeBrush = nativeSolidFill;
|
||||
}
|
||||
virtual SolidBrush* Clone() const
|
||||
{
|
||||
GpBrush *cloneBrush = NULL;
|
||||
Status status = updateStatus(DllExports::GdipCloneBrush(
|
||||
nativeBrush, &cloneBrush));
|
||||
if (status == Ok) {
|
||||
SolidBrush *result =
|
||||
new SolidBrush(cloneBrush, lastStatus);
|
||||
if (!result) {
|
||||
DllExports::GdipDeleteBrush(cloneBrush);
|
||||
updateStatus(OutOfMemory);
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
Status GetColor(Color *color) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetSolidFillColor(
|
||||
(GpSolidFill*) nativeBrush,
|
||||
color ? &color->Value : NULL));
|
||||
}
|
||||
Status SetColor(const Color& color)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetSolidFillColor(
|
||||
(GpSolidFill*) nativeBrush, color.GetValue()));
|
||||
}
|
||||
|
||||
private:
|
||||
SolidBrush(GpBrush *brush, Status status): Brush(brush, status) {}
|
||||
SolidBrush(const SolidBrush&);
|
||||
SolidBrush& operator=(const SolidBrush&);
|
||||
};
|
||||
|
||||
class TextureBrush: public Brush
|
||||
{
|
||||
public:
|
||||
TextureBrush(Image *image, WrapMode wrapMode = WrapModeTile)
|
||||
{
|
||||
GpTexture *nativeTexture = NULL;
|
||||
lastStatus = DllExports::GdipCreateTexture(
|
||||
image ? image->nativeImage : NULL,
|
||||
wrapMode, &nativeTexture);
|
||||
nativeBrush = nativeTexture;
|
||||
}
|
||||
TextureBrush(Image *image, WrapMode wrapMode,
|
||||
REAL dstX, REAL dstY, REAL dstWidth, REAL dstHeight)
|
||||
{
|
||||
GpTexture *nativeTexture = NULL;
|
||||
lastStatus = DllExports::GdipCreateTexture2(
|
||||
image ? image->nativeImage : NULL,
|
||||
wrapMode, dstX, dstY, dstWidth, dstHeight,
|
||||
&nativeTexture);
|
||||
nativeBrush = nativeTexture;
|
||||
}
|
||||
TextureBrush(Image *image, WrapMode wrapMode,
|
||||
INT dstX, INT dstY, INT dstWidth, INT dstHeight)
|
||||
{
|
||||
GpTexture *nativeTexture = NULL;
|
||||
lastStatus = DllExports::GdipCreateTexture2I(
|
||||
image ? image->nativeImage : NULL,
|
||||
wrapMode, dstX, dstY, dstWidth, dstHeight,
|
||||
&nativeTexture);
|
||||
nativeBrush = nativeTexture;
|
||||
}
|
||||
TextureBrush(Image *image, WrapMode wrapMode, const RectF& dstRect)
|
||||
{
|
||||
GpTexture *nativeTexture = NULL;
|
||||
lastStatus = DllExports::GdipCreateTexture2(
|
||||
image ? image->nativeImage : NULL, wrapMode,
|
||||
dstRect.X, dstRect.Y,
|
||||
dstRect.Width, dstRect.Height, &nativeTexture);
|
||||
nativeBrush = nativeTexture;
|
||||
}
|
||||
TextureBrush(Image *image, WrapMode wrapMode, const Rect& dstRect)
|
||||
{
|
||||
GpTexture *nativeTexture = NULL;
|
||||
lastStatus = DllExports::GdipCreateTexture2I(
|
||||
image ? image->nativeImage : NULL, wrapMode,
|
||||
dstRect.X, dstRect.Y,
|
||||
dstRect.Width, dstRect.Height, &nativeTexture);
|
||||
nativeBrush = nativeTexture;
|
||||
}
|
||||
TextureBrush(Image *image, const RectF& dstRect,
|
||||
ImageAttributes *imageAttributes = NULL)
|
||||
{
|
||||
GpTexture *nativeTexture = NULL;
|
||||
lastStatus = DllExports::GdipCreateTextureIA(
|
||||
image ? image->nativeImage : NULL,
|
||||
imageAttributes ? imageAttributes->nativeImageAttributes : NULL,
|
||||
dstRect.X, dstRect.Y,
|
||||
dstRect.Width, dstRect.Height, &nativeTexture);
|
||||
nativeBrush = nativeTexture;
|
||||
}
|
||||
TextureBrush(Image *image, const Rect& dstRect,
|
||||
ImageAttributes *imageAttributes = NULL)
|
||||
{
|
||||
GpTexture *nativeTexture = NULL;
|
||||
lastStatus = DllExports::GdipCreateTextureIAI(
|
||||
image ? image->nativeImage : NULL,
|
||||
imageAttributes ? imageAttributes->nativeImageAttributes : NULL,
|
||||
dstRect.X, dstRect.Y,
|
||||
dstRect.Width, dstRect.Height, &nativeTexture);
|
||||
nativeBrush = nativeTexture;
|
||||
}
|
||||
virtual TextureBrush* Clone() const
|
||||
{
|
||||
GpBrush *cloneBrush = NULL;
|
||||
Status status = updateStatus(DllExports::GdipCloneBrush(
|
||||
nativeBrush, &cloneBrush));
|
||||
if (status == Ok) {
|
||||
TextureBrush *result =
|
||||
new TextureBrush(cloneBrush, lastStatus);
|
||||
if (!result) {
|
||||
DllExports::GdipDeleteBrush(cloneBrush);
|
||||
updateStatus(OutOfMemory);
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: implement TextureBrush::GetImage()
|
||||
//Image *GetImage() const
|
||||
//{
|
||||
// // where is the Image allocated (static,member,new,other)?
|
||||
// // GdipGetTextureImage just returns a GpImage*
|
||||
// updateStatus(NotImplemented);
|
||||
// return NULL;
|
||||
//}
|
||||
Status GetTransfrom(Matrix *matrix) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetTextureTransform(
|
||||
(GpTexture*) nativeBrush,
|
||||
matrix ? matrix->nativeMatrix : NULL));
|
||||
}
|
||||
WrapMode GetWrapMode() const
|
||||
{
|
||||
WrapMode result = WrapModeTile;
|
||||
updateStatus(DllExports::GdipGetTextureWrapMode(
|
||||
(GpTexture*) nativeBrush, &result));
|
||||
return result;
|
||||
}
|
||||
Status MultiplyTransform(const Matrix *matrix,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipMultiplyTextureTransform(
|
||||
(GpTexture*) nativeBrush,
|
||||
matrix ? matrix->nativeMatrix : NULL, order));
|
||||
}
|
||||
Status ResetTransform()
|
||||
{
|
||||
return updateStatus(DllExports::GdipResetTextureTransform(
|
||||
(GpTexture*) nativeBrush));
|
||||
}
|
||||
Status RotateTransform(REAL angle,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipRotateTextureTransform(
|
||||
(GpTexture*) nativeBrush, angle, order));
|
||||
}
|
||||
Status ScaleTransform(REAL sx, REAL sy,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipScaleTextureTransform(
|
||||
(GpTexture*) nativeBrush, sx, sy, order));
|
||||
}
|
||||
Status SetTransform(const Matrix *matrix)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetTextureTransform(
|
||||
(GpTexture*) nativeBrush,
|
||||
matrix ? matrix->nativeMatrix : NULL));
|
||||
}
|
||||
Status SetWrapMode(WrapMode wrapMode)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetTextureWrapMode(
|
||||
(GpTexture*) nativeBrush, wrapMode));
|
||||
}
|
||||
Status TranslateTransform(REAL dx, REAL dy,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipTranslateTextureTransform(
|
||||
(GpTexture*) nativeBrush, dx, dy, order));
|
||||
}
|
||||
|
||||
private:
|
||||
TextureBrush(GpBrush *brush, Status status): Brush(brush, status) {}
|
||||
TextureBrush(const TextureBrush&);
|
||||
TextureBrush& operator=(const TextureBrush&);
|
||||
};
|
||||
|
||||
#endif /* __GDIPLUS_BRUSH_H */
|
|
@ -0,0 +1,262 @@
|
|||
/*
|
||||
* gdipluscolor.h
|
||||
*
|
||||
* GDI+ color
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_COLOR_H
|
||||
#define __GDIPLUS_COLOR_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
typedef enum ColorChannelFlags {
|
||||
ColorChannelFlagsC = 0,
|
||||
ColorChannelFlagsM = 1,
|
||||
ColorChannelFlagsY = 2,
|
||||
ColorChannelFlagsK = 3,
|
||||
ColorChannelFlagsLast = 4
|
||||
} ColorChannelFlags;
|
||||
|
||||
typedef struct Color
|
||||
{
|
||||
#ifdef __cplusplus
|
||||
private:
|
||||
#endif
|
||||
ARGB Value;
|
||||
|
||||
#ifdef __cplusplus
|
||||
public:
|
||||
friend class Bitmap;
|
||||
friend class Graphics;
|
||||
friend class HatchBrush;
|
||||
friend class PathGradientBrush;
|
||||
friend class Pen;
|
||||
friend class SolidBrush;
|
||||
|
||||
static ARGB MakeARGB(BYTE a, BYTE r, BYTE g, BYTE b)
|
||||
{
|
||||
return (ARGB) ((((DWORD) a) << 24) | (((DWORD) r) << 16)
|
||||
| (((DWORD) g) << 8) | ((DWORD) b));
|
||||
}
|
||||
|
||||
static const ARGB AlphaMask = 0xFF000000UL;
|
||||
|
||||
static const ARGB AliceBlue = 0xFFF0F8FFUL;
|
||||
static const ARGB AntiqueWhite = 0xFFFAEBD7UL;
|
||||
static const ARGB Aqua = 0xFF00FFFFUL;
|
||||
static const ARGB Aquamarine = 0xFF7FFFD4UL;
|
||||
static const ARGB Azure = 0xFFF0FFFFUL;
|
||||
static const ARGB Beige = 0xFFF5F5DCUL;
|
||||
static const ARGB Bisque = 0xFFFFE4C4UL;
|
||||
static const ARGB Black = 0xFF000000UL;
|
||||
static const ARGB BlanchedAlmond = 0xFFFFEBCDUL;
|
||||
static const ARGB Blue = 0xFF0000FFUL;
|
||||
static const ARGB BlueViolet = 0xFF8A2BE2UL;
|
||||
static const ARGB Brown = 0xFFA52A2AUL;
|
||||
static const ARGB BurlyWood = 0xFFDEB887UL;
|
||||
static const ARGB CadetBlue = 0xFF5F9EA0UL;
|
||||
static const ARGB Chartreuse = 0xFF7FFF00UL;
|
||||
static const ARGB Chocolate = 0xFFD2691EUL;
|
||||
static const ARGB Coral = 0xFFFF7F50UL;
|
||||
static const ARGB CornflowerBlue = 0xFF6495EDUL;
|
||||
static const ARGB Cornsilk = 0xFFFFF8DCUL;
|
||||
static const ARGB Crimson = 0xFFDC143CUL;
|
||||
static const ARGB Cyan = 0xFF00FFFFUL;
|
||||
static const ARGB DarkBlue = 0xFF00008BUL;
|
||||
static const ARGB DarkCyan = 0xFF008B8BUL;
|
||||
static const ARGB DarkGoldenrod = 0xFFB8860BUL;
|
||||
static const ARGB DarkGray = 0xFFA9A9A9UL;
|
||||
static const ARGB DarkGreen = 0xFF006400UL;
|
||||
static const ARGB DarkKhaki = 0xFFBDB76BUL;
|
||||
static const ARGB DarkMagenta = 0xFF8B008BUL;
|
||||
static const ARGB DarkOliveGreen = 0xFF556B2FUL;
|
||||
static const ARGB DarkOrange = 0xFFFF8C00UL;
|
||||
static const ARGB DarkOrchid = 0xFF9932CCUL;
|
||||
static const ARGB DarkRed = 0xFF8B0000UL;
|
||||
static const ARGB DarkSalmon = 0xFFE9967AUL;
|
||||
static const ARGB DarkSeaGreen = 0xFF8FBC8FUL;
|
||||
static const ARGB DarkSlateBlue = 0xFF483D8BUL;
|
||||
static const ARGB DarkSlateGray = 0xFF2F4F4FUL;
|
||||
static const ARGB DarkTurquoise = 0xFF00CED1UL;
|
||||
static const ARGB DarkViolet = 0xFF9400D3UL;
|
||||
static const ARGB DeepPink = 0xFFFF1493UL;
|
||||
static const ARGB DeepSkyBlue = 0xFF00BFFFUL;
|
||||
static const ARGB DimGray = 0xFF696969UL;
|
||||
static const ARGB DodgerBlue = 0xFF1E90FFUL;
|
||||
static const ARGB Firebrick = 0xFFB22222UL;
|
||||
static const ARGB FloralWhite = 0xFFFFFAF0UL;
|
||||
static const ARGB ForestGreen = 0xFF228B22UL;
|
||||
static const ARGB Fuchsia = 0xFFFF00FFUL;
|
||||
static const ARGB Gainsboro = 0xFFDCDCDCUL;
|
||||
static const ARGB GhostWhite = 0xFFF8F8FFUL;
|
||||
static const ARGB Gold = 0xFFFFD700UL;
|
||||
static const ARGB Goldenrod = 0xFFDAA520UL;
|
||||
static const ARGB Gray = 0xFF808080UL;
|
||||
static const ARGB Green = 0xFF008000UL;
|
||||
static const ARGB GreenYellow = 0xFFADFF2FUL;
|
||||
static const ARGB Honeydew = 0xFFF0FFF0UL;
|
||||
static const ARGB HotPink = 0xFFFF69B4UL;
|
||||
static const ARGB IndianRed = 0xFFCD5C5CUL;
|
||||
static const ARGB Indigo = 0xFF4B0082UL;
|
||||
static const ARGB Ivory = 0xFFFFFFF0UL;
|
||||
static const ARGB Khaki = 0xFFF0E68CUL;
|
||||
static const ARGB Lavender = 0xFFE6E6FAUL;
|
||||
static const ARGB LavenderBlush = 0xFFFFF0F5UL;
|
||||
static const ARGB LawnGreen = 0xFF7CFC00UL;
|
||||
static const ARGB LemonChiffon = 0xFFFFFACDUL;
|
||||
static const ARGB LightBlue = 0xFFADD8E6UL;
|
||||
static const ARGB LightCoral = 0xFFF08080UL;
|
||||
static const ARGB LightCyan = 0xFFE0FFFFUL;
|
||||
static const ARGB LightGoldenrodYellow = 0xFFFAFAD2UL;
|
||||
static const ARGB LightGray = 0xFFD3D3D3UL;
|
||||
static const ARGB LightGreen = 0xFF90EE90UL;
|
||||
static const ARGB LightPink = 0xFFFFB6C1UL;
|
||||
static const ARGB LightSalmon = 0xFFFFA07AUL;
|
||||
static const ARGB LightSeaGreen = 0xFF20B2AAUL;
|
||||
static const ARGB LightSkyBlue = 0xFF87CEFAUL;
|
||||
static const ARGB LightSlateGray = 0xFF778899UL;
|
||||
static const ARGB LightSteelBlue = 0xFFB0C4DEUL;
|
||||
static const ARGB LightYellow = 0xFFFFFFE0UL;
|
||||
static const ARGB Lime = 0xFF00FF00UL;
|
||||
static const ARGB LimeGreen = 0xFF32CD32UL;
|
||||
static const ARGB Linen = 0xFFFAF0E6UL;
|
||||
static const ARGB Magenta = 0xFFFF00FFUL;
|
||||
static const ARGB Maroon = 0xFF800000UL;
|
||||
static const ARGB MediumAquamarine = 0xFF66CDAAUL;
|
||||
static const ARGB MediumBlue = 0xFF0000CDUL;
|
||||
static const ARGB MediumOrchid = 0xFFBA55D3UL;
|
||||
static const ARGB MediumPurple = 0xFF9370DBUL;
|
||||
static const ARGB MediumSeaGreen = 0xFF3CB371UL;
|
||||
static const ARGB MediumSlateBlue = 0xFF7B68EEUL;
|
||||
static const ARGB MediumSpringGreen = 0xFF00FA9AUL;
|
||||
static const ARGB MediumTurquoise = 0xFF48D1CCUL;
|
||||
static const ARGB MediumVioletRed = 0xFFC71585UL;
|
||||
static const ARGB MidnightBlue = 0xFF191970UL;
|
||||
static const ARGB MintCream = 0xFFF5FFFAUL;
|
||||
static const ARGB MistyRose = 0xFFFFE4E1UL;
|
||||
static const ARGB Moccasin = 0xFFFFE4B5UL;
|
||||
static const ARGB NavajoWhite = 0xFFFFDEADUL;
|
||||
static const ARGB Navy = 0xFF000080UL;
|
||||
static const ARGB OldLace = 0xFFFDF5E6UL;
|
||||
static const ARGB Olive = 0xFF808000UL;
|
||||
static const ARGB OliveDrab = 0xFF6B8E23UL;
|
||||
static const ARGB Orange = 0xFFFFA500UL;
|
||||
static const ARGB OrangeRed = 0xFFFF4500UL;
|
||||
static const ARGB Orchid = 0xFFDA70D6UL;
|
||||
static const ARGB PaleGoldenrod = 0xFFEEE8AAUL;
|
||||
static const ARGB PaleGreen = 0xFF98FB98UL;
|
||||
static const ARGB PaleTurquoise = 0xFFAFEEEEUL;
|
||||
static const ARGB PaleVioletRed = 0xFFDB7093UL;
|
||||
static const ARGB PapayaWhip = 0xFFFFEFD5UL;
|
||||
static const ARGB PeachPuff = 0xFFFFDAB9UL;
|
||||
static const ARGB Peru = 0xFFCD853FUL;
|
||||
static const ARGB Pink = 0xFFFFC0CBUL;
|
||||
static const ARGB Plum = 0xFFDDA0DDUL;
|
||||
static const ARGB PowderBlue = 0xFFB0E0E6UL;
|
||||
static const ARGB Purple = 0xFF800080UL;
|
||||
static const ARGB Red = 0xFFFF0000UL;
|
||||
static const ARGB RosyBrown = 0xFFBC8F8FUL;
|
||||
static const ARGB RoyalBlue = 0xFF4169E1UL;
|
||||
static const ARGB SaddleBrown = 0xFF8B4513UL;
|
||||
static const ARGB Salmon = 0xFFFA8072UL;
|
||||
static const ARGB SandyBrown = 0xFFF4A460UL;
|
||||
static const ARGB SeaGreen = 0xFF2E8B57UL;
|
||||
static const ARGB SeaShell = 0xFFFFF5EEUL;
|
||||
static const ARGB Sienna = 0xFFA0522DUL;
|
||||
static const ARGB Silver = 0xFFC0C0C0UL;
|
||||
static const ARGB SkyBlue = 0xFF87CEEBUL;
|
||||
static const ARGB SlateBlue = 0xFF6A5ACDUL;
|
||||
static const ARGB SlateGray = 0xFF708090UL;
|
||||
static const ARGB Snow = 0xFFFFFAFAUL;
|
||||
static const ARGB SpringGreen = 0xFF00FF7FUL;
|
||||
static const ARGB SteelBlue = 0xFF4682B4UL;
|
||||
static const ARGB Tan = 0xFFD2B48CUL;
|
||||
static const ARGB Teal = 0xFF008080UL;
|
||||
static const ARGB Thistle = 0xFFD8BFD8UL;
|
||||
static const ARGB Tomato = 0xFFFF6347UL;
|
||||
static const ARGB Transparent = 0x00FFFFFFUL;
|
||||
static const ARGB Turquoise = 0xFF40E0D0UL;
|
||||
static const ARGB Violet = 0xFFEE82EEUL;
|
||||
static const ARGB Wheat = 0xFFF5DEB3UL;
|
||||
static const ARGB White = 0xFFFFFFFFUL;
|
||||
static const ARGB WhiteSmoke = 0xFFF5F5F5UL;
|
||||
static const ARGB Yellow = 0xFFFFFF00UL;
|
||||
static const ARGB YellowGreen = 0xFF9ACD32UL;
|
||||
|
||||
Color(): Value(0xFF000000) {}
|
||||
Color(ARGB argb): Value(argb) {}
|
||||
Color(BYTE r, BYTE g, BYTE b): Value(MakeARGB(0xFF, r, g, b)) {}
|
||||
Color(BYTE a, BYTE r, BYTE g, BYTE b): Value(MakeARGB(a, r, g, b)) {}
|
||||
|
||||
BYTE GetA() const
|
||||
{
|
||||
return (BYTE) (Value >> 24);
|
||||
}
|
||||
BYTE GetAlpha() const
|
||||
{
|
||||
return (BYTE) (Value >> 24);
|
||||
}
|
||||
BYTE GetB() const
|
||||
{
|
||||
return (BYTE) Value;
|
||||
}
|
||||
BYTE GetBlue() const
|
||||
{
|
||||
return (BYTE) Value;
|
||||
}
|
||||
BYTE GetG() const
|
||||
{
|
||||
return (BYTE) (Value >> 8);
|
||||
}
|
||||
BYTE GetGreen() const
|
||||
{
|
||||
return (BYTE) (Value >> 8);
|
||||
}
|
||||
BYTE GetR() const
|
||||
{
|
||||
return (BYTE) (Value >> 16);
|
||||
}
|
||||
BYTE GetRed() const
|
||||
{
|
||||
return (BYTE) (Value >> 16);
|
||||
}
|
||||
ARGB GetValue() const
|
||||
{
|
||||
return Value;
|
||||
}
|
||||
VOID SetFromCOLORREF(COLORREF rgb)
|
||||
{
|
||||
BYTE r = (BYTE) rgb;
|
||||
BYTE g = (BYTE) (rgb >> 8);
|
||||
BYTE b = (BYTE) (rgb >> 16);
|
||||
Value = MakeARGB(0xFF, r, g, b);
|
||||
}
|
||||
VOID SetValue(ARGB argb)
|
||||
{
|
||||
Value = argb;
|
||||
}
|
||||
COLORREF ToCOLORREF() const
|
||||
{
|
||||
return RGB(GetRed(), GetGreen(), GetBlue());
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
} Color;
|
||||
|
||||
#endif /* __GDIPLUS_COLOR_H */
|
|
@ -0,0 +1,67 @@
|
|||
/*
|
||||
* gdipluscolormatrix.h
|
||||
*
|
||||
* GDI+ color mappings
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_COLORMATRIX_H
|
||||
#define __GDIPLUS_COLORMATRIX_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
typedef enum ColorAdjustType {
|
||||
ColorAdjustTypeDefault = 0,
|
||||
ColorAdjustTypeBitmap = 1,
|
||||
ColorAdjustTypeBrush = 2,
|
||||
ColorAdjustTypePen = 3,
|
||||
ColorAdjustTypeText = 4,
|
||||
ColorAdjustTypeCount = 5,
|
||||
ColorAdjustTypeAny = 6
|
||||
} ColorAdjustType;
|
||||
|
||||
typedef enum ColorMatrixFlags {
|
||||
ColorMatrixFlagsDefault = 0,
|
||||
ColorMatrixFlagsSkipGrays = 1,
|
||||
ColorMatrixFlagsAltGray = 2
|
||||
} ColorMatrixFlags;
|
||||
|
||||
typedef enum HistogramFormat {
|
||||
HistogramFormatARGB = 0,
|
||||
HistogramFormatPARGB = 1,
|
||||
HistogramFormatRGB = 2,
|
||||
HistogramFormatGray = 3,
|
||||
HistogramFormatB = 4,
|
||||
HistogramFormatG = 5,
|
||||
HistogramFormatR = 6,
|
||||
HistogramFormatA = 7
|
||||
} HistogramFormat;
|
||||
|
||||
typedef struct ColorMap {
|
||||
Color oldColor;
|
||||
Color newColor;
|
||||
} ColorMap;
|
||||
|
||||
typedef struct ColorMatrix {
|
||||
REAL m[5][5];
|
||||
} ColorMatrix;
|
||||
|
||||
typedef BYTE ColorChannelLUT[256];
|
||||
|
||||
#endif /* __GDIPLUS_COLORMATRIX_H */
|
|
@ -0,0 +1,116 @@
|
|||
/*
|
||||
* gdipluseffects.h
|
||||
*
|
||||
* GDI+ filters and effects
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_EFFECTS_H
|
||||
#define __GDIPLUS_EFFECTS_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
typedef enum CurveAdjustments {
|
||||
AdjustExposure = 0,
|
||||
AdjustDensity = 1,
|
||||
AdjustContrast = 2,
|
||||
AdjustHighlight = 3,
|
||||
AdjustShadow = 4,
|
||||
AdjustMidtone = 5,
|
||||
AdjustWhiteSaturation = 6,
|
||||
AdjustBlackSaturation = 7
|
||||
} CurveAdjustments;
|
||||
|
||||
typedef enum CurveChannel {
|
||||
CurveChannelAll = 0,
|
||||
CurveChannelRed = 1,
|
||||
CurveChannelGreen = 2,
|
||||
CurveChannelBlue = 3
|
||||
} CurveChannel;
|
||||
|
||||
typedef struct BlurParams {
|
||||
REAL radius;
|
||||
BOOL expandEdge;
|
||||
} BlurParams;
|
||||
|
||||
typedef struct BrightnessContrastParams {
|
||||
INT brightnessLevel;
|
||||
INT contrastLevel;
|
||||
} BrightnessContrastParams;
|
||||
|
||||
typedef struct ColorBalanceParams {
|
||||
INT cyanRed;
|
||||
INT magentaGreen;
|
||||
INT yellowBlue;
|
||||
} ColorBalanceParams;
|
||||
|
||||
typedef struct ColorCurveParams {
|
||||
CurveAdjustments adjustment;
|
||||
CurveChannel channel;
|
||||
INT adjustValue;
|
||||
} ColorCurveParams;
|
||||
|
||||
typedef struct ColorLUTParams {
|
||||
ColorChannelLUT lutB;
|
||||
ColorChannelLUT lutG;
|
||||
ColorChannelLUT lutR;
|
||||
ColorChannelLUT lutA;
|
||||
} ColorLUTParams;
|
||||
|
||||
typedef struct HueSaturationLightnessParams {
|
||||
INT hueLevel;
|
||||
INT saturationLevel;
|
||||
INT lightnessLevel;
|
||||
} HueSaturationLightnessParams;
|
||||
|
||||
typedef struct LevelsParams {
|
||||
INT highlight;
|
||||
INT midtone;
|
||||
INT shadow;
|
||||
} LevelsParams;
|
||||
|
||||
typedef struct RedEyeCorrectionParams {
|
||||
UINT numberOfAreas;
|
||||
RECT *areas;
|
||||
} RedEyeCorrectionParams;
|
||||
|
||||
typedef struct SharpenParams {
|
||||
REAL radius;
|
||||
REAL amount;
|
||||
} SharpenParams;
|
||||
|
||||
typedef struct TintParams {
|
||||
INT hue;
|
||||
INT amount;
|
||||
} TintParams;
|
||||
|
||||
extern const GUID BlurEffectGuid; /* ? */
|
||||
extern const GUID BrightnessContrastEffectGuid; /* ? */
|
||||
extern const GUID ColorBalanceEffectGuid; /* ? */
|
||||
extern const GUID ColorCurveEffectGuid; /* ? */
|
||||
extern const GUID ColorLUTEffectGuid; /* ? */
|
||||
extern const GUID ColorMatrixEffectGuid; /* ? */
|
||||
extern const GUID HueSaturationLightnessEffectGuid; /* ? */
|
||||
extern const GUID LevelsEffectGuid; /* ? */
|
||||
extern const GUID RedEyeCorrectionEffectGuid; /* ? */
|
||||
extern const GUID SharpenEffectGuid; /* ? */
|
||||
extern const GUID TintEffectGuid; /* ? */
|
||||
|
||||
|
||||
#endif /* __GDIPLUS_EFFECTS_H */
|
|
@ -0,0 +1,755 @@
|
|||
/*
|
||||
* gdiplusenums.h
|
||||
*
|
||||
* GDI+ enumerations
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_ENUMS_H
|
||||
#define __GDIPLUS_ENUMS_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
typedef enum BrushType {
|
||||
BrushTypeSolidColor = 0,
|
||||
BrushTypeHatchFill = 1,
|
||||
BrushTypeTextureFill = 2,
|
||||
BrushTypePathGradient = 3,
|
||||
BrushTypeLinearGradient = 4
|
||||
} BrushType;
|
||||
|
||||
typedef enum CombineMode {
|
||||
CombineModeReplace = 0,
|
||||
CombineModeIntersect = 1,
|
||||
CombineModeUnion = 2,
|
||||
CombineModeXor = 3,
|
||||
CombineModeExclude = 4,
|
||||
CombineModeComplement = 5
|
||||
} CombineMode;
|
||||
|
||||
typedef enum CompositingMode {
|
||||
CompositingModeSourceOver = 0,
|
||||
CompositingModeSourceCopy = 1
|
||||
} CompositingMode;
|
||||
|
||||
typedef enum CompositingQuality {
|
||||
CompositingQualityDefault = 0,
|
||||
CompositingQualityHighSpeed = 1,
|
||||
CompositingQualityHighQuality = 2,
|
||||
CompositingQualityGammaCorrected = 3,
|
||||
CompositingQualityAssumeLinear = 4
|
||||
} CompositingQuality;
|
||||
|
||||
typedef enum CoordinateSpace {
|
||||
CoordinateSpaceWorld = 0,
|
||||
CoordinateSpacePage = 1,
|
||||
CoordinateSpaceDevice = 2
|
||||
} CoordinateSpace;
|
||||
|
||||
typedef enum CustomLineCapType {
|
||||
CustomLineCapTypeDefault = 0,
|
||||
CustomLineCapTypeAdjustableArrow = 1
|
||||
} CustomLineCapType;
|
||||
|
||||
typedef enum DashCap {
|
||||
DashCapFlat = 0,
|
||||
DashCapRound = 2,
|
||||
DashCapTriangle = 3
|
||||
} DashCap;
|
||||
|
||||
typedef enum DashStyle {
|
||||
DashStyleSolid = 0,
|
||||
DashStyleDash = 1,
|
||||
DashStyleDot = 2,
|
||||
DashStyleDashDot = 3,
|
||||
DashStyleDashDotDot = 4,
|
||||
DashStyleCustom = 5
|
||||
} DashStyle;
|
||||
|
||||
typedef enum DitherType {
|
||||
DitherTypeNone = 0,
|
||||
DitherTypeSolid = 1,
|
||||
DitherTypeOrdered4x4 = 2,
|
||||
DitherTypeOrdered8x8 = 3,
|
||||
DitherTypeOrdered16x16 = 4,
|
||||
DitherTypeOrdered91x91 = 5,
|
||||
DitherTypeSpiral4x4 = 6,
|
||||
DitherTypeSpiral8x8 = 7,
|
||||
DitherTypeDualSpiral4x4 = 8,
|
||||
DitherTypeDualSpiral8x8 = 9,
|
||||
DitherTypeErrorDiffusion = 10
|
||||
} DitherType;
|
||||
|
||||
typedef enum DriverStringOptions {
|
||||
DriverStringOptionsCmapLookup = 1,
|
||||
DriverStringOptionsVertical = 2,
|
||||
DriverStringOptionsRealizedAdvance = 4,
|
||||
DriverStringOptionsLimitSubpixel = 8
|
||||
} DriverStringOptions;
|
||||
|
||||
#define GDIP_WMF_RECORD_TO_EMFPLUS(meta) ((meta) | 0x10000)
|
||||
#define GDIP_EMFPLUS_RECORD_BASE (0x4000)
|
||||
typedef enum EmfPlusRecordType {
|
||||
WmfRecordTypeSetBkColor = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKCOLOR),
|
||||
WmfRecordTypeSetBkMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKMODE),
|
||||
WmfRecordTypeSetMapMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETMAPMODE),
|
||||
WmfRecordTypeSetROP2 = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETROP2),
|
||||
WmfRecordTypeSetRelAbs = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETRELABS),
|
||||
WmfRecordTypeSetPolyFillMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPOLYFILLMODE),
|
||||
WmfRecordTypeSetStretchBltMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETSTRETCHBLTMODE),
|
||||
WmfRecordTypeSetTextCharExtra = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTCHAREXTRA),
|
||||
WmfRecordTypeSetTextColor = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTCOLOR),
|
||||
WmfRecordTypeSetTextJustification = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTJUSTIFICATION),
|
||||
WmfRecordTypeSetWindowOrg = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETWINDOWORG),
|
||||
WmfRecordTypeSetWindowExt = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETWINDOWEXT),
|
||||
WmfRecordTypeSetViewportOrg = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETVIEWPORTORG),
|
||||
WmfRecordTypeSetViewportExt = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETVIEWPORTEXT),
|
||||
WmfRecordTypeOffsetWindowOrg = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETWINDOWORG),
|
||||
WmfRecordTypeScaleWindowExt = GDIP_WMF_RECORD_TO_EMFPLUS(META_SCALEWINDOWEXT),
|
||||
WmfRecordTypeOffsetViewportOrg = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETVIEWPORTORG),
|
||||
WmfRecordTypeScaleViewportExt = GDIP_WMF_RECORD_TO_EMFPLUS(META_SCALEVIEWPORTEXT),
|
||||
WmfRecordTypeLineTo = GDIP_WMF_RECORD_TO_EMFPLUS(META_LINETO),
|
||||
WmfRecordTypeMoveTo = GDIP_WMF_RECORD_TO_EMFPLUS(META_MOVETO),
|
||||
WmfRecordTypeExcludeClipRect = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXCLUDECLIPRECT),
|
||||
WmfRecordTypeIntersectClipRect = GDIP_WMF_RECORD_TO_EMFPLUS(META_INTERSECTCLIPRECT),
|
||||
WmfRecordTypeArc = GDIP_WMF_RECORD_TO_EMFPLUS(META_ARC),
|
||||
WmfRecordTypeEllipse = GDIP_WMF_RECORD_TO_EMFPLUS(META_ELLIPSE),
|
||||
WmfRecordTypeFloodFill = GDIP_WMF_RECORD_TO_EMFPLUS(META_FLOODFILL),
|
||||
WmfRecordTypePie = GDIP_WMF_RECORD_TO_EMFPLUS(META_PIE),
|
||||
WmfRecordTypeRectangle = GDIP_WMF_RECORD_TO_EMFPLUS(META_RECTANGLE),
|
||||
WmfRecordTypeRoundRect = GDIP_WMF_RECORD_TO_EMFPLUS(META_ROUNDRECT),
|
||||
WmfRecordTypePatBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_PATBLT),
|
||||
WmfRecordTypeSaveDC = GDIP_WMF_RECORD_TO_EMFPLUS(META_SAVEDC),
|
||||
WmfRecordTypeSetPixel = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPIXEL),
|
||||
WmfRecordTypeOffsetClipRgn = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETCLIPRGN),
|
||||
WmfRecordTypeTextOut = GDIP_WMF_RECORD_TO_EMFPLUS(META_TEXTOUT),
|
||||
WmfRecordTypeBitBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_BITBLT),
|
||||
WmfRecordTypeStretchBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_STRETCHBLT),
|
||||
WmfRecordTypePolygon = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYGON),
|
||||
WmfRecordTypePolyline = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYLINE),
|
||||
WmfRecordTypeEscape = GDIP_WMF_RECORD_TO_EMFPLUS(META_ESCAPE),
|
||||
WmfRecordTypeRestoreDC = GDIP_WMF_RECORD_TO_EMFPLUS(META_RESTOREDC),
|
||||
WmfRecordTypeFillRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_FILLREGION),
|
||||
WmfRecordTypeFrameRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_FRAMEREGION),
|
||||
WmfRecordTypeInvertRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_INVERTREGION),
|
||||
WmfRecordTypePaintRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_PAINTREGION),
|
||||
WmfRecordTypeSelectClipRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTCLIPREGION),
|
||||
WmfRecordTypeSelectObject = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTOBJECT),
|
||||
WmfRecordTypeSetTextAlign = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTALIGN),
|
||||
WmfRecordTypeDrawText = GDIP_WMF_RECORD_TO_EMFPLUS(0x062F),
|
||||
WmfRecordTypeChord = GDIP_WMF_RECORD_TO_EMFPLUS(META_CHORD),
|
||||
WmfRecordTypeSetMapperFlags = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETMAPPERFLAGS),
|
||||
WmfRecordTypeExtTextOut = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXTTEXTOUT),
|
||||
WmfRecordTypeSetDIBToDev = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETDIBTODEV),
|
||||
WmfRecordTypeSelectPalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTPALETTE),
|
||||
WmfRecordTypeRealizePalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_REALIZEPALETTE),
|
||||
WmfRecordTypeAnimatePalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_ANIMATEPALETTE),
|
||||
WmfRecordTypeSetPalEntries = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPALENTRIES),
|
||||
WmfRecordTypePolyPolygon = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYPOLYGON),
|
||||
WmfRecordTypeResizePalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_RESIZEPALETTE),
|
||||
WmfRecordTypeDIBBitBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBBITBLT),
|
||||
WmfRecordTypeDIBStretchBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBSTRETCHBLT),
|
||||
WmfRecordTypeDIBCreatePatternBrush = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBCREATEPATTERNBRUSH),
|
||||
WmfRecordTypeStretchDIB = GDIP_WMF_RECORD_TO_EMFPLUS(META_STRETCHDIB),
|
||||
WmfRecordTypeExtFloodFill = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXTFLOODFILL),
|
||||
WmfRecordTypeSetLayout = GDIP_WMF_RECORD_TO_EMFPLUS(0x0149),
|
||||
WmfRecordTypeResetDC = GDIP_WMF_RECORD_TO_EMFPLUS(0x014C),
|
||||
WmfRecordTypeStartDoc = GDIP_WMF_RECORD_TO_EMFPLUS(0x014D),
|
||||
WmfRecordTypeStartPage = GDIP_WMF_RECORD_TO_EMFPLUS(0x004F),
|
||||
WmfRecordTypeEndPage = GDIP_WMF_RECORD_TO_EMFPLUS(0x0050),
|
||||
WmfRecordTypeAbortDoc = GDIP_WMF_RECORD_TO_EMFPLUS(0x0052),
|
||||
WmfRecordTypeEndDoc = GDIP_WMF_RECORD_TO_EMFPLUS(0x005E),
|
||||
WmfRecordTypeDeleteObject = GDIP_WMF_RECORD_TO_EMFPLUS(META_DELETEOBJECT),
|
||||
WmfRecordTypeCreatePalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPALETTE),
|
||||
WmfRecordTypeCreateBrush = GDIP_WMF_RECORD_TO_EMFPLUS(0x00F8),
|
||||
WmfRecordTypeCreatePatternBrush = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPATTERNBRUSH),
|
||||
WmfRecordTypeCreatePenIndirect = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPENINDIRECT),
|
||||
WmfRecordTypeCreateFontIndirect = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEFONTINDIRECT),
|
||||
WmfRecordTypeCreateBrushIndirect = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEBRUSHINDIRECT),
|
||||
WmfRecordTypeCreateBitmapIndirect = GDIP_WMF_RECORD_TO_EMFPLUS(0x02FD),
|
||||
WmfRecordTypeCreateBitmap = GDIP_WMF_RECORD_TO_EMFPLUS(0x06FE),
|
||||
WmfRecordTypeCreateRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEREGION),
|
||||
EmfRecordTypeHeader = EMR_HEADER,
|
||||
EmfRecordTypePolyBezier = EMR_POLYBEZIER,
|
||||
EmfRecordTypePolygon = EMR_POLYGON,
|
||||
EmfRecordTypePolyline = EMR_POLYLINE,
|
||||
EmfRecordTypePolyBezierTo = EMR_POLYBEZIERTO,
|
||||
EmfRecordTypePolyLineTo = EMR_POLYLINETO,
|
||||
EmfRecordTypePolyPolyline = EMR_POLYPOLYLINE,
|
||||
EmfRecordTypePolyPolygon = EMR_POLYPOLYGON,
|
||||
EmfRecordTypeSetWindowExtEx = EMR_SETWINDOWEXTEX,
|
||||
EmfRecordTypeSetWindowOrgEx = EMR_SETWINDOWORGEX,
|
||||
EmfRecordTypeSetViewportExtEx = EMR_SETVIEWPORTEXTEX,
|
||||
EmfRecordTypeSetViewportOrgEx = EMR_SETVIEWPORTORGEX,
|
||||
EmfRecordTypeSetBrushOrgEx = EMR_SETBRUSHORGEX,
|
||||
EmfRecordTypeEOF = EMR_EOF,
|
||||
EmfRecordTypeSetPixelV = EMR_SETPIXELV,
|
||||
EmfRecordTypeSetMapperFlags = EMR_SETMAPPERFLAGS,
|
||||
EmfRecordTypeSetMapMode = EMR_SETMAPMODE,
|
||||
EmfRecordTypeSetBkMode = EMR_SETBKMODE,
|
||||
EmfRecordTypeSetPolyFillMode = EMR_SETPOLYFILLMODE,
|
||||
EmfRecordTypeSetROP2 = EMR_SETROP2,
|
||||
EmfRecordTypeSetStretchBltMode = EMR_SETSTRETCHBLTMODE,
|
||||
EmfRecordTypeSetTextAlign = EMR_SETTEXTALIGN,
|
||||
EmfRecordTypeSetColorAdjustment = EMR_SETCOLORADJUSTMENT,
|
||||
EmfRecordTypeSetTextColor = EMR_SETTEXTCOLOR,
|
||||
EmfRecordTypeSetBkColor = EMR_SETBKCOLOR,
|
||||
EmfRecordTypeOffsetClipRgn = EMR_OFFSETCLIPRGN,
|
||||
EmfRecordTypeMoveToEx = EMR_MOVETOEX,
|
||||
EmfRecordTypeSetMetaRgn = EMR_SETMETARGN,
|
||||
EmfRecordTypeExcludeClipRect = EMR_EXCLUDECLIPRECT,
|
||||
EmfRecordTypeIntersectClipRect = EMR_INTERSECTCLIPRECT,
|
||||
EmfRecordTypeScaleViewportExtEx = EMR_SCALEVIEWPORTEXTEX,
|
||||
EmfRecordTypeScaleWindowExtEx = EMR_SCALEWINDOWEXTEX,
|
||||
EmfRecordTypeSaveDC = EMR_SAVEDC,
|
||||
EmfRecordTypeRestoreDC = EMR_RESTOREDC,
|
||||
EmfRecordTypeSetWorldTransform = EMR_SETWORLDTRANSFORM,
|
||||
EmfRecordTypeModifyWorldTransform = EMR_MODIFYWORLDTRANSFORM,
|
||||
EmfRecordTypeSelectObject = EMR_SELECTOBJECT,
|
||||
EmfRecordTypeCreatePen = EMR_CREATEPEN,
|
||||
EmfRecordTypeCreateBrushIndirect = EMR_CREATEBRUSHINDIRECT,
|
||||
EmfRecordTypeDeleteObject = EMR_DELETEOBJECT,
|
||||
EmfRecordTypeAngleArc = EMR_ANGLEARC,
|
||||
EmfRecordTypeEllipse = EMR_ELLIPSE,
|
||||
EmfRecordTypeRectangle = EMR_RECTANGLE,
|
||||
EmfRecordTypeRoundRect = EMR_ROUNDRECT,
|
||||
EmfRecordTypeArc = EMR_ARC,
|
||||
EmfRecordTypeChord = EMR_CHORD,
|
||||
EmfRecordTypePie = EMR_PIE,
|
||||
EmfRecordTypeSelectPalette = EMR_SELECTPALETTE,
|
||||
EmfRecordTypeCreatePalette = EMR_CREATEPALETTE,
|
||||
EmfRecordTypeSetPaletteEntries = EMR_SETPALETTEENTRIES,
|
||||
EmfRecordTypeResizePalette = EMR_RESIZEPALETTE,
|
||||
EmfRecordTypeRealizePalette = EMR_REALIZEPALETTE,
|
||||
EmfRecordTypeExtFloodFill = EMR_EXTFLOODFILL,
|
||||
EmfRecordTypeLineTo = EMR_LINETO,
|
||||
EmfRecordTypeArcTo = EMR_ARCTO,
|
||||
EmfRecordTypePolyDraw = EMR_POLYDRAW,
|
||||
EmfRecordTypeSetArcDirection = EMR_SETARCDIRECTION,
|
||||
EmfRecordTypeSetMiterLimit = EMR_SETMITERLIMIT,
|
||||
EmfRecordTypeBeginPath = EMR_BEGINPATH,
|
||||
EmfRecordTypeEndPath = EMR_ENDPATH,
|
||||
EmfRecordTypeCloseFigure = EMR_CLOSEFIGURE,
|
||||
EmfRecordTypeFillPath = EMR_FILLPATH,
|
||||
EmfRecordTypeStrokeAndFillPath = EMR_STROKEANDFILLPATH,
|
||||
EmfRecordTypeStrokePath = EMR_STROKEPATH,
|
||||
EmfRecordTypeFlattenPath = EMR_FLATTENPATH,
|
||||
EmfRecordTypeWidenPath = EMR_WIDENPATH,
|
||||
EmfRecordTypeSelectClipPath = EMR_SELECTCLIPPATH,
|
||||
EmfRecordTypeAbortPath = EMR_ABORTPATH,
|
||||
EmfRecordTypeReserved_069 = 69,
|
||||
EmfRecordTypeGdiComment = EMR_GDICOMMENT,
|
||||
EmfRecordTypeFillRgn = EMR_FILLRGN,
|
||||
EmfRecordTypeFrameRgn = EMR_FRAMERGN,
|
||||
EmfRecordTypeInvertRgn = EMR_INVERTRGN,
|
||||
EmfRecordTypePaintRgn = EMR_PAINTRGN,
|
||||
EmfRecordTypeExtSelectClipRgn = EMR_EXTSELECTCLIPRGN,
|
||||
EmfRecordTypeBitBlt = EMR_BITBLT,
|
||||
EmfRecordTypeStretchBlt = EMR_STRETCHBLT,
|
||||
EmfRecordTypeMaskBlt = EMR_MASKBLT,
|
||||
EmfRecordTypePlgBlt = EMR_PLGBLT,
|
||||
EmfRecordTypeSetDIBitsToDevice = EMR_SETDIBITSTODEVICE,
|
||||
EmfRecordTypeStretchDIBits = EMR_STRETCHDIBITS,
|
||||
EmfRecordTypeExtCreateFontIndirect = EMR_EXTCREATEFONTINDIRECTW,
|
||||
EmfRecordTypeExtTextOutA = EMR_EXTTEXTOUTA,
|
||||
EmfRecordTypeExtTextOutW = EMR_EXTTEXTOUTW,
|
||||
EmfRecordTypePolyBezier16 = EMR_POLYBEZIER16,
|
||||
EmfRecordTypePolygon16 = EMR_POLYGON16,
|
||||
EmfRecordTypePolyline16 = EMR_POLYLINE16,
|
||||
EmfRecordTypePolyBezierTo16 = EMR_POLYBEZIERTO16,
|
||||
EmfRecordTypePolylineTo16 = EMR_POLYLINETO16,
|
||||
EmfRecordTypePolyPolyline16 = EMR_POLYPOLYLINE16,
|
||||
EmfRecordTypePolyPolygon16 = EMR_POLYPOLYGON16,
|
||||
EmfRecordTypePolyDraw16 = EMR_POLYDRAW16,
|
||||
EmfRecordTypeCreateMonoBrush = EMR_CREATEMONOBRUSH,
|
||||
EmfRecordTypeCreateDIBPatternBrushPt = EMR_CREATEDIBPATTERNBRUSHPT,
|
||||
EmfRecordTypeExtCreatePen = EMR_EXTCREATEPEN,
|
||||
EmfRecordTypePolyTextOutA = EMR_POLYTEXTOUTA,
|
||||
EmfRecordTypePolyTextOutW = EMR_POLYTEXTOUTW,
|
||||
EmfRecordTypeSetICMMode = 98,
|
||||
EmfRecordTypeCreateColorSpace = 99,
|
||||
EmfRecordTypeSetColorSpace = 100,
|
||||
EmfRecordTypeDeleteColorSpace = 101,
|
||||
EmfRecordTypeGLSRecord = 102,
|
||||
EmfRecordTypeGLSBoundedRecord = 103,
|
||||
EmfRecordTypePixelFormat = 104,
|
||||
EmfRecordTypeDrawEscape = 105,
|
||||
EmfRecordTypeExtEscape = 106,
|
||||
EmfRecordTypeStartDoc = 107,
|
||||
EmfRecordTypeSmallTextOut = 108,
|
||||
EmfRecordTypeForceUFIMapping = 109,
|
||||
EmfRecordTypeNamedEscape = 110,
|
||||
EmfRecordTypeColorCorrectPalette = 111,
|
||||
EmfRecordTypeSetICMProfileA = 112,
|
||||
EmfRecordTypeSetICMProfileW = 113,
|
||||
EmfRecordTypeAlphaBlend = 114,
|
||||
EmfRecordTypeSetLayout = 115,
|
||||
EmfRecordTypeTransparentBlt = 116,
|
||||
EmfRecordTypeReserved_117 = 117,
|
||||
EmfRecordTypeGradientFill = 118,
|
||||
EmfRecordTypeSetLinkedUFIs = 119,
|
||||
EmfRecordTypeSetTextJustification = 120,
|
||||
EmfRecordTypeColorMatchToTargetW = 121,
|
||||
EmfRecordTypeCreateColorSpaceW = 122,
|
||||
EmfRecordTypeMax = 122,
|
||||
EmfRecordTypeMin = 1,
|
||||
EmfPlusRecordTypeInvalid = GDIP_EMFPLUS_RECORD_BASE,
|
||||
EmfPlusRecordTypeHeader,
|
||||
EmfPlusRecordTypeEndOfFile,
|
||||
EmfPlusRecordTypeComment,
|
||||
EmfPlusRecordTypeGetDC,
|
||||
EmfPlusRecordTypeMultiFormatStart,
|
||||
EmfPlusRecordTypeMultiFormatSection,
|
||||
EmfPlusRecordTypeMultiFormatEnd,
|
||||
EmfPlusRecordTypeObject,
|
||||
EmfPlusRecordTypeClear,
|
||||
EmfPlusRecordTypeFillRects,
|
||||
EmfPlusRecordTypeDrawRects,
|
||||
EmfPlusRecordTypeFillPolygon,
|
||||
EmfPlusRecordTypeDrawLines,
|
||||
EmfPlusRecordTypeFillEllipse,
|
||||
EmfPlusRecordTypeDrawEllipse,
|
||||
EmfPlusRecordTypeFillPie,
|
||||
EmfPlusRecordTypeDrawPie,
|
||||
EmfPlusRecordTypeDrawArc,
|
||||
EmfPlusRecordTypeFillRegion,
|
||||
EmfPlusRecordTypeFillPath,
|
||||
EmfPlusRecordTypeDrawPath,
|
||||
EmfPlusRecordTypeFillClosedCurve,
|
||||
EmfPlusRecordTypeDrawClosedCurve,
|
||||
EmfPlusRecordTypeDrawCurve,
|
||||
EmfPlusRecordTypeDrawBeziers,
|
||||
EmfPlusRecordTypeDrawImage,
|
||||
EmfPlusRecordTypeDrawImagePoints,
|
||||
EmfPlusRecordTypeDrawString,
|
||||
EmfPlusRecordTypeSetRenderingOrigin,
|
||||
EmfPlusRecordTypeSetAntiAliasMode,
|
||||
EmfPlusRecordTypeSetTextRenderingHint,
|
||||
EmfPlusRecordTypeSetTextContrast,
|
||||
EmfPlusRecordTypeSetGammaValue,
|
||||
EmfPlusRecordTypeSetInterpolationMode,
|
||||
EmfPlusRecordTypeSetPixelOffsetMode,
|
||||
EmfPlusRecordTypeSetCompositingMode,
|
||||
EmfPlusRecordTypeSetCompositingQuality,
|
||||
EmfPlusRecordTypeSave,
|
||||
EmfPlusRecordTypeRestore,
|
||||
EmfPlusRecordTypeBeginContainer,
|
||||
EmfPlusRecordTypeBeginContainerNoParams,
|
||||
EmfPlusRecordTypeEndContainer,
|
||||
EmfPlusRecordTypeSetWorldTransform,
|
||||
EmfPlusRecordTypeResetWorldTransform,
|
||||
EmfPlusRecordTypeMultiplyWorldTransform,
|
||||
EmfPlusRecordTypeTranslateWorldTransform,
|
||||
EmfPlusRecordTypeScaleWorldTransform,
|
||||
EmfPlusRecordTypeRotateWorldTransform,
|
||||
EmfPlusRecordTypeSetPageTransform,
|
||||
EmfPlusRecordTypeResetClip,
|
||||
EmfPlusRecordTypeSetClipRect,
|
||||
EmfPlusRecordTypeSetClipPath,
|
||||
EmfPlusRecordTypeSetClipRegion,
|
||||
EmfPlusRecordTypeOffsetClip,
|
||||
EmfPlusRecordTypeDrawDriverString,
|
||||
EmfPlusRecordTypeStrokeFillPath,
|
||||
EmfPlusRecordTypeSerializableObject,
|
||||
EmfPlusRecordTypeSetTSGraphics,
|
||||
EmfPlusRecordTypeSetTSClip,
|
||||
EmfPlusRecordTotal,
|
||||
EmfPlusRecordTypeMax = EmfPlusRecordTotal-1,
|
||||
EmfPlusRecordTypeMin = EmfPlusRecordTypeHeader
|
||||
} EmfPlusRecordType;
|
||||
|
||||
typedef enum EmfToWmfBitsFlags {
|
||||
EmfToWmfBitsFlagsDefault = 0,
|
||||
EmfToWmfBitsFlagsEmbedEmf = 1,
|
||||
EmfToWmfBitsFlagsIncludePlaceable = 2,
|
||||
EmfToWmfBitsFlagsNoXORClip = 4
|
||||
} EmfToWmfBitsFlags;
|
||||
|
||||
typedef enum EmfType {
|
||||
EmfTypeEmfOnly = 3,
|
||||
EmfTypeEmfPlusOnly = 4,
|
||||
EmfTypeEmfPlusDual = 5
|
||||
} EmfType;
|
||||
|
||||
typedef enum EncoderParameterValueType {
|
||||
EncoderParameterValueTypeByte = 1,
|
||||
EncoderParameterValueTypeASCII = 2,
|
||||
EncoderParameterValueTypeShort = 3,
|
||||
EncoderParameterValueTypeLong = 4,
|
||||
EncoderParameterValueTypeRational = 5,
|
||||
EncoderParameterValueTypeLongRange = 6,
|
||||
EncoderParameterValueTypeUndefined = 7,
|
||||
EncoderParameterValueTypeRationalRange = 8,
|
||||
EncoderParameterValueTypePointer = 9
|
||||
} EncoderParameterValueType;
|
||||
|
||||
typedef enum EncoderValue {
|
||||
EncoderValueColorTypeCMYK = 0,
|
||||
EncoderValueColorTypeYCCK = 1,
|
||||
EncoderValueCompressionLZW = 2,
|
||||
EncoderValueCompressionCCITT3 = 3,
|
||||
EncoderValueCompressionCCITT4 = 4,
|
||||
EncoderValueCompressionRle = 5,
|
||||
EncoderValueCompressionNone = 6,
|
||||
EncoderValueScanMethodInterlaced = 7,
|
||||
EncoderValueScanMethodNonInterlaced = 8,
|
||||
EncoderValueVersionGif87 = 9,
|
||||
EncoderValueVersionGif89 = 10,
|
||||
EncoderValueRenderProgressive = 11,
|
||||
EncoderValueRenderNonProgressive = 12,
|
||||
EncoderValueTransformRotate90 = 13,
|
||||
EncoderValueTransformRotate180 = 14,
|
||||
EncoderValueTransformRotate270 = 15,
|
||||
EncoderValueTransformFlipHorizontal = 16,
|
||||
EncoderValueTransformFlipVertical = 17,
|
||||
EncoderValueMultiFrame = 18,
|
||||
EncoderValueLastFrame = 19,
|
||||
EncoderValueFlush = 20,
|
||||
EncoderValueFrameDimensionTime = 21,
|
||||
EncoderValueFrameDimensionResolution = 22,
|
||||
EncoderValueFrameDimensionPage = 23
|
||||
} EncoderValue;
|
||||
|
||||
typedef enum FillMode {
|
||||
FillModeAlternate = 0,
|
||||
FillModeWinding = 1
|
||||
} FillMode;
|
||||
|
||||
typedef enum FlushIntention {
|
||||
FlushIntentionFlush = 0,
|
||||
FlushIntentionSync = 1
|
||||
} FlushIntention;
|
||||
|
||||
typedef enum FontStyle {
|
||||
FontStyleRegular = 0,
|
||||
FontStyleBold = 1,
|
||||
FontStyleItalic = 2,
|
||||
FontStyleBoldItalic = 3,
|
||||
FontStyleUnderline = 4,
|
||||
FontStyleStrikeout = 8
|
||||
} FontStyle;
|
||||
|
||||
typedef enum HatchStyle {
|
||||
HatchStyleHorizontal = 0,
|
||||
HatchStyleVertical = 1,
|
||||
HatchStyleForwardDiagonal = 2,
|
||||
HatchStyleBackwardDiagonal = 3,
|
||||
HatchStyleCross = 4,
|
||||
HatchStyleLargeGrid = 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,
|
||||
HatchStyleMin = HatchStyleHorizontal,
|
||||
HatchStyleMax = HatchStyleTotal - 1
|
||||
} HatchStyle;
|
||||
|
||||
typedef enum HotkeyPrefix {
|
||||
HotkeyPrefixNone = 0,
|
||||
HotkeyPrefixShow = 1,
|
||||
HotkeyPrefixHide = 2
|
||||
} HotkeyPrefix;
|
||||
|
||||
typedef enum ImageType {
|
||||
ImageTypeUnknown = 0,
|
||||
ImageTypeBitmap = 1,
|
||||
ImageTypeMetafile = 2
|
||||
} ImageType;
|
||||
|
||||
/* TODO: InterpolationMode */
|
||||
typedef enum InterpolationMode {
|
||||
/*InterpolationModeInvalid = QualityModeInvalid,*/
|
||||
InterpolationModeDefault = 0,
|
||||
InterpolationModeLowQuality = 1,
|
||||
InterpolationModeHighQuality = 2,
|
||||
InterpolationModeBilinear = 3,
|
||||
InterpolationModeBicubic = 4,
|
||||
InterpolationModeNearestNeighbor = 5,
|
||||
InterpolationModeHighQualityBilinear = 6,
|
||||
InterpolationModeHighQualityBicubic = 7
|
||||
} InterpolationMode;
|
||||
|
||||
typedef enum LinearGradientMode {
|
||||
LinearGradientModeHorizontal = 0,
|
||||
LinearGradientModeVertical = 1,
|
||||
LinearGradientModeForwardDiagonal = 2,
|
||||
LinearGradientModeBackwardDiagonal = 3
|
||||
} LinearGradientMode;
|
||||
|
||||
typedef enum LineCap {
|
||||
LineCapFlat = 0,
|
||||
LineCapSquare = 1,
|
||||
LineCapRound = 2,
|
||||
LineCapTriangle = 3,
|
||||
LineCapNoAnchor = 16,
|
||||
LineCapSquareAnchor = 17,
|
||||
LineCapRoundAnchor = 18,
|
||||
LineCapDiamondAnchor = 19,
|
||||
LineCapArrowAnchor = 20,
|
||||
LineCapCustom = 255
|
||||
} LineCap;
|
||||
|
||||
typedef enum LineJoin {
|
||||
LineJoinMiter = 0,
|
||||
LineJoinBevel = 1,
|
||||
LineJoinRound = 2,
|
||||
LineJoinMiterClipped = 3
|
||||
} LineJoin;
|
||||
|
||||
typedef enum MatrixOrder {
|
||||
MatrixOrderPrepend = 0,
|
||||
MatrixOrderAppend = 1
|
||||
} MatrixOrder;
|
||||
|
||||
typedef enum MetafileFrameUnit {
|
||||
MetafileFrameUnitPixel = 2,
|
||||
MetafileFrameUnitPoint = 3,
|
||||
MetafileFrameUnitInch = 4,
|
||||
MetafileFrameUnitDocument = 5,
|
||||
MetafileFrameUnitMillimeter = 6,
|
||||
MetafileFrameUnitGdi = 7
|
||||
} MetafileFrameUnit;
|
||||
|
||||
typedef enum MetafileType {
|
||||
MetafileTypeInvalid = 0,
|
||||
MetafileTypeWmf = 1,
|
||||
MetafileTypeWmfPlaceable = 2,
|
||||
MetafileTypeEmf = 3,
|
||||
MetafileTypeEmfPlusOnly = 4,
|
||||
MetafileTypeEmfPlusDual = 5
|
||||
} MetafileType;
|
||||
|
||||
typedef enum ObjectType {
|
||||
ObjectTypeInvalid = 0,
|
||||
ObjectTypeBrush = 1,
|
||||
ObjectTypePen = 2,
|
||||
ObjectTypePath = 3,
|
||||
ObjectTypeRegion = 4,
|
||||
ObjectTypeFont = 5,
|
||||
ObjectTypeStringFormat = 6,
|
||||
ObjectTypeImageAttributes = 7,
|
||||
ObjectTypeCustomLineCap = 8,
|
||||
ObjectTypeGraphics = 9,
|
||||
ObjectTypeMin = ObjectTypeBrush,
|
||||
ObjectTypeMax = ObjectTypeGraphics
|
||||
} ObjectType;
|
||||
|
||||
typedef enum PathPointType {
|
||||
PathPointTypeStart = 0x00,
|
||||
PathPointTypeLine = 0x01,
|
||||
PathPointTypeBezier = 0x03,
|
||||
PathPointTypeBezier3 = 0x03,
|
||||
PathPointTypePathTypeMask = 0x07,
|
||||
PathPointTypePathDashMode = 0x10,
|
||||
PathPointTypePathMarker = 0x20,
|
||||
PathPointTypeCloseSubpath = 0x80
|
||||
} PathPointType;
|
||||
|
||||
typedef enum PenAlignment {
|
||||
PenAlignmentCenter = 0,
|
||||
PenAlignmentInset = 1
|
||||
} PenAlignment;
|
||||
|
||||
typedef enum PenType {
|
||||
PenTypeUnknown = -1,
|
||||
PenTypeSolidColor = 0,
|
||||
PenTypeHatchFill = 1,
|
||||
PenTypeTextureFill = 2,
|
||||
PenTypePathGradient = 3,
|
||||
PenTypeLinearGradient = 4
|
||||
} PenType;
|
||||
|
||||
/* TODO: PixelOffsetMode */
|
||||
typedef enum PixelOffsetMode {
|
||||
/*PixelOffsetModeInvalid = QualityModeInvalid,*/
|
||||
PixelOffsetModeDefault = 0,
|
||||
PixelOffsetModeHighSpeed = 1,
|
||||
PixelOffsetModeHighQuality = 2,
|
||||
PixelOffsetModeNone = 3,
|
||||
PixelOffsetModeHalf = 4
|
||||
} PixelOffsetMode;
|
||||
|
||||
/* TODO: QualityMode */
|
||||
typedef enum QualityMode {
|
||||
/*QualityModeInvalid = ?,*/
|
||||
QualityModeDefault = 0,
|
||||
QualityModeLow = 1,
|
||||
QualityModeHigh = 2
|
||||
} QualityMode;
|
||||
|
||||
/* TODO: SmoothingMode */
|
||||
typedef enum SmoothingMode {
|
||||
/*SmoothingModeInvalid = QualityModeInvalid,*/
|
||||
SmoothingModeDefault = 0,
|
||||
SmoothingModeHighSpeed = 1,
|
||||
SmoothingModeHighQuality = 2,
|
||||
SmoothingModeNone = 3,
|
||||
SmoothingModeAntiAlias8x4 = 4,
|
||||
SmoothingModeAntiAlias = 4,
|
||||
SmoothingModeAntiAlias8x8 = 5
|
||||
} SmoothingMode;
|
||||
|
||||
typedef enum StringAlignment {
|
||||
StringAlignmentNear = 0,
|
||||
StringAlignmentCenter = 1,
|
||||
StringAlignmentFar = 2
|
||||
} StringAlignment;
|
||||
|
||||
typedef enum StringDigitSubstitute {
|
||||
StringDigitSubstituteUser = 0,
|
||||
StringDigitSubstituteNone = 1,
|
||||
StringDigitSubstituteNational = 2,
|
||||
StringDigitSubstituteTraditional = 3
|
||||
} StringDigitSubstitute;
|
||||
|
||||
typedef enum StringFormatFlags {
|
||||
StringFormatFlagsDirectionRightToLeft = 0x00000001,
|
||||
StringFormatFlagsDirectionVertical = 0x00000002,
|
||||
StringFormatFlagsNoFitBlackBox = 0x00000004,
|
||||
StringFormatFlagsDisplayFormatControl = 0x00000020,
|
||||
StringFormatFlagsNoFontFallback = 0x00000400,
|
||||
StringFormatFlagsMeasureTrailingSpaces = 0x00000800,
|
||||
StringFormatFlagsNoWrap = 0x00001000,
|
||||
StringFormatFlagsLineLimit = 0x00002000,
|
||||
StringFormatFlagsNoClip = 0x00004000
|
||||
} StringFormatFlags;
|
||||
|
||||
typedef enum StringTrimming {
|
||||
StringTrimmingNone = 0,
|
||||
StringTrimmingCharacter = 1,
|
||||
StringTrimmingWord = 2,
|
||||
StringTrimmingEllipsisCharacter = 3,
|
||||
StringTrimmingEllipsisWord = 4,
|
||||
StringTrimmingEllipsisPath = 5
|
||||
} StringTrimming;
|
||||
|
||||
typedef enum TextRenderingHint {
|
||||
TextRenderingHintSystemDefault = 0,
|
||||
TextRenderingHintSingleBitPerPixelGridFit = 1,
|
||||
TextRenderingHintSingleBitPerPixel = 2,
|
||||
TextRenderingHintAntiAliasGridFit = 3,
|
||||
TextRenderingHintAntiAlias = 4,
|
||||
TextRenderingHintClearTypeGridFit = 5
|
||||
} TextRenderingHint;
|
||||
|
||||
typedef enum Unit {
|
||||
UnitWorld = 0,
|
||||
UnitDisplay = 1,
|
||||
UnitPixel = 2,
|
||||
UnitPoint = 3,
|
||||
UnitInch = 4,
|
||||
UnitDocument = 5,
|
||||
UnitMillimeter = 6
|
||||
} Unit;
|
||||
|
||||
typedef enum WarpMode {
|
||||
WarpModePerspective = 0,
|
||||
WarpModeBilinear = 1
|
||||
} WarpMode;
|
||||
|
||||
typedef enum WrapMode {
|
||||
WrapModeTile = 0,
|
||||
WrapModeTileFlipX = 1,
|
||||
WrapModeTileFlipY = 2,
|
||||
WrapModeTileFlipXY = 3,
|
||||
WrapModeClamp = 4
|
||||
} WrapMode;
|
||||
|
||||
typedef enum GpTestControlEnum {
|
||||
TestControlForceBilinear = 0,
|
||||
TestControlForceNoICM = 1,
|
||||
TestControlGetBuildNumber = 2
|
||||
} GpTestControlEnum;
|
||||
|
||||
/* Opaque handles to information blocks on an internal GDI+ stack. */
|
||||
typedef DWORD GraphicsContainer;
|
||||
typedef DWORD GraphicsState;
|
||||
|
||||
/* Default flatness for GraphicsPath methods Flatten, Outline, Warp, Widen */
|
||||
/* FIXME: Is FlatnessDefault = 0.25f correct? */
|
||||
#ifdef __cplusplus
|
||||
const REAL FlatnessDefault = 0.25f;
|
||||
#else
|
||||
#define FlatnessDefault ((REAL) 0.25f)
|
||||
#endif
|
||||
|
||||
static __inline__ BOOL ObjectTypeIsValid(ObjectType type)
|
||||
{
|
||||
switch (type) {
|
||||
case ObjectTypeBrush:
|
||||
case ObjectTypePen:
|
||||
case ObjectTypePath:
|
||||
case ObjectTypeRegion:
|
||||
case ObjectTypeFont:
|
||||
case ObjectTypeStringFormat:
|
||||
case ObjectTypeImageAttributes:
|
||||
case ObjectTypeCustomLineCap:
|
||||
case ObjectTypeGraphics:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* __GDIPLUS_ENUMS_H */
|
|
@ -0,0 +1,722 @@
|
|||
/*
|
||||
* gdiplusflat.h
|
||||
*
|
||||
* GDI+ Flat API
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_FLAT_H
|
||||
#define __GDIPLUS_FLAT_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
namespace DllExports {
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* AdjustableArrowCap functions */
|
||||
GpStatus WINGDIPAPI GdipCreateAdjustableArrowCap(REAL,REAL,BOOL,GpAdjustableArrowCap**);
|
||||
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapHeight(GpAdjustableArrowCap*,REAL);
|
||||
GpStatus WINGDIPAPI GdipGetAdjustableArrowCapHeight(GpAdjustableArrowCap*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapWidth(GpAdjustableArrowCap*,REAL);
|
||||
GpStatus WINGDIPAPI GdipGetAdjustableArrowCapWidth(GpAdjustableArrowCap*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapMiddleInset(GpAdjustableArrowCap*,REAL);
|
||||
GpStatus WINGDIPAPI GdipGetAdjustableArrowCapMiddleInset(GpAdjustableArrowCap*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapFillState(GpAdjustableArrowCap*,BOOL);
|
||||
GpStatus WINGDIPAPI GdipGetAdjustableArrowCapFillState(GpAdjustableArrowCap*,BOOL*);
|
||||
|
||||
/* Bitmap functions */
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromStream(IStream*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromFile(GDIPCONST WCHAR*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromStreamICM(IStream*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromFileICM(GDIPCONST WCHAR*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT,INT,INT,PixelFormat,BYTE*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromGraphics(INT,INT,GpGraphics*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromDirectDrawSurface(IDirectDrawSurface7*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromGdiDib(GDIPCONST BITMAPINFO*,VOID*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromHBITMAP(HBITMAP,HPALETTE,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateHBITMAPFromBitmap(GpBitmap*,HBITMAP*,ARGB);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromHICON(HICON,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCreateHICONFromBitmap(GpBitmap*,HICON*);
|
||||
GpStatus WINGDIPAPI GdipCreateBitmapFromResource(HINSTANCE,GDIPCONST WCHAR*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCloneBitmapArea(REAL,REAL,REAL,REAL,PixelFormat,GpBitmap*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipCloneBitmapAreaI(INT,INT,INT,INT,PixelFormat,GpBitmap*,GpBitmap**);
|
||||
GpStatus WINGDIPAPI GdipBitmapLockBits(GpBitmap*,GDIPCONST GpRect*,UINT,PixelFormat,BitmapData*);
|
||||
GpStatus WINGDIPAPI GdipBitmapUnlockBits(GpBitmap*,BitmapData*);
|
||||
GpStatus WINGDIPAPI GdipBitmapGetPixel(GpBitmap*,INT,INT,ARGB*);
|
||||
GpStatus WINGDIPAPI GdipBitmapSetPixel(GpBitmap*,INT,INT,ARGB);
|
||||
GpStatus WINGDIPAPI GdipBitmapSetResolution(GpBitmap*,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipBitmapConvertFormat(GpBitmap*,PixelFormat,DitherType,PaletteType,ColorPalette*,REAL);
|
||||
GpStatus WINGDIPAPI GdipInitializePalette(ColorPalette*,PaletteType,INT,BOOL,GpBitmap*);
|
||||
GpStatus WINGDIPAPI GdipBitmapApplyEffect(GpBitmap*,CGpEffect*,RECT*,BOOL,VOID**,INT*);
|
||||
GpStatus WINGDIPAPI GdipBitmapCreateApplyEffect(GpBitmap**,INT,CGpEffect*,RECT*,RECT*,GpBitmap**,BOOL,VOID**,INT*);
|
||||
GpStatus WINGDIPAPI GdipBitmapGetHistogram(GpBitmap*,HistogramFormat,UINT,UINT*,UINT*,UINT*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipBitmapGetHistogramSize(HistogramFormat,UINT*);
|
||||
|
||||
/* Brush functions */
|
||||
GpStatus WINGDIPAPI GdipCloneBrush(GpBrush*,GpBrush**);
|
||||
GpStatus WINGDIPAPI GdipDeleteBrush(GpBrush*);
|
||||
GpStatus WINGDIPAPI GdipGetBrushType(GpBrush*,GpBrushType*);
|
||||
|
||||
/* CachedBitmap functions */
|
||||
GpStatus WINGDIPAPI GdipCreateCachedBitmap(GpBitmap*,GpGraphics*,GpCachedBitmap**);
|
||||
GpStatus WINGDIPAPI GdipDeleteCachedBitmap(GpCachedBitmap*);
|
||||
GpStatus WINGDIPAPI GdipDrawCachedBitmap(GpGraphics*,GpCachedBitmap*,INT,INT);
|
||||
|
||||
/* CustomLineCap functions */
|
||||
GpStatus WINGDIPAPI GdipCreateCustomLineCap(GpPath*,GpPath*,GpLineCap,REAL,GpCustomLineCap**);
|
||||
GpStatus WINGDIPAPI GdipDeleteCustomLineCap(GpCustomLineCap*);
|
||||
GpStatus WINGDIPAPI GdipCloneCustomLineCap(GpCustomLineCap*,GpCustomLineCap**);
|
||||
GpStatus WINGDIPAPI GdipGetCustomLineCapType(GpCustomLineCap*,CustomLineCapType*);
|
||||
GpStatus WINGDIPAPI GdipSetCustomLineCapStrokeCaps(GpCustomLineCap*,GpLineCap,GpLineCap);
|
||||
GpStatus WINGDIPAPI GdipGetCustomLineCapStrokeCaps(GpCustomLineCap*,GpLineCap*,GpLineCap*);
|
||||
GpStatus WINGDIPAPI GdipSetCustomLineCapStrokeJoin(GpCustomLineCap*,GpLineJoin);
|
||||
GpStatus WINGDIPAPI GdipGetCustomLineCapStrokeJoin(GpCustomLineCap*,GpLineJoin*);
|
||||
GpStatus WINGDIPAPI GdipSetCustomLineCapBaseCap(GpCustomLineCap*,GpLineCap);
|
||||
GpStatus WINGDIPAPI GdipGetCustomLineCapBaseCap(GpCustomLineCap*,GpLineCap*);
|
||||
GpStatus WINGDIPAPI GdipSetCustomLineCapBaseInset(GpCustomLineCap*,REAL);
|
||||
GpStatus WINGDIPAPI GdipGetCustomLineCapBaseInset(GpCustomLineCap*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipSetCustomLineCapWidthScale(GpCustomLineCap*,REAL);
|
||||
GpStatus WINGDIPAPI GdipGetCustomLineCapWidthScale(GpCustomLineCap*,REAL*);
|
||||
|
||||
/* Effect functions */
|
||||
GpStatus WINGDIPAPI GdipCreateEffect(GDIPCONST GUID,CGpEffect**);
|
||||
GpStatus WINGDIPAPI GdipDeleteEffect(CGpEffect*);
|
||||
GpStatus WINGDIPAPI GdipGetEffectParameterSize(CGpEffect*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipSetEffectParameters(CGpEffect*,GDIPCONST VOID*,UINT);
|
||||
GpStatus WINGDIPAPI GdipGetEffectParameters(CGpEffect*,UINT*,VOID*);
|
||||
|
||||
/* Font functions */
|
||||
GpStatus WINGDIPAPI GdipCreateFontFromDC(HDC,GpFont**);
|
||||
GpStatus WINGDIPAPI GdipCreateFontFromLogfontA(HDC,GDIPCONST LOGFONTA*,GpFont**);
|
||||
GpStatus WINGDIPAPI GdipCreateFontFromLogfontW(HDC,GDIPCONST LOGFONTW*,GpFont**);
|
||||
GpStatus WINGDIPAPI GdipCreateFont(GDIPCONST GpFontFamily*,REAL,INT,Unit,GpFont**);
|
||||
GpStatus WINGDIPAPI GdipCloneFont(GpFont*,GpFont**);
|
||||
GpStatus WINGDIPAPI GdipDeleteFont(GpFont*);
|
||||
GpStatus WINGDIPAPI GdipGetFamily(GpFont*,GpFontFamily**);
|
||||
GpStatus WINGDIPAPI GdipGetFontStyle(GpFont*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetFontSize(GpFont*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetFontUnit(GpFont*,Unit*);
|
||||
GpStatus WINGDIPAPI GdipGetFontHeight(GDIPCONST GpFont*,GDIPCONST GpGraphics*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetFontHeightGivenDPI(GDIPCONST GpFont*,REAL,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetLogFontA(GpFont*,GpGraphics*,LOGFONTA*);
|
||||
GpStatus WINGDIPAPI GdipGetLogFontW(GpFont*,GpGraphics*,LOGFONTW*);
|
||||
GpStatus WINGDIPAPI GdipNewInstalledFontCollection(GpFontCollection**);
|
||||
GpStatus WINGDIPAPI GdipNewPrivateFontCollection(GpFontCollection**);
|
||||
GpStatus WINGDIPAPI GdipDeletePrivateFontCollection(GpFontCollection**);
|
||||
GpStatus WINGDIPAPI GdipGetFontCollectionFamilyCount(GpFontCollection*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetFontCollectionFamilyList(GpFontCollection*,INT,GpFontFamily**,INT*);
|
||||
GpStatus WINGDIPAPI GdipPrivateAddFontFile(GpFontCollection*,GDIPCONST WCHAR*);
|
||||
GpStatus WINGDIPAPI GdipPrivateAddMemoryFont(GpFontCollection*,GDIPCONST void*,INT);
|
||||
|
||||
/* FontFamily functions */
|
||||
GpStatus WINGDIPAPI GdipCreateFontFamilyFromName(GDIPCONST WCHAR*,GpFontCollection*,GpFontFamily**);
|
||||
GpStatus WINGDIPAPI GdipDeleteFontFamily(GpFontFamily*);
|
||||
GpStatus WINGDIPAPI GdipCloneFontFamily(GpFontFamily*,GpFontFamily**);
|
||||
GpStatus WINGDIPAPI GdipGetGenericFontFamilySansSerif(GpFontFamily**);
|
||||
GpStatus WINGDIPAPI GdipGetGenericFontFamilySerif(GpFontFamily**);
|
||||
GpStatus WINGDIPAPI GdipGetGenericFontFamilyMonospace(GpFontFamily**);
|
||||
GpStatus WINGDIPAPI GdipGetFamilyName(GDIPCONST GpFontFamily*,WCHAR[LF_FACESIZE],LANGID);
|
||||
GpStatus WINGDIPAPI GdipIsStyleAvailable(GDIPCONST GpFontFamily*,INT,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipFontCollectionEnumerable(GpFontCollection*,GpGraphics*,INT*);
|
||||
GpStatus WINGDIPAPI GdipFontCollectionEnumerate(GpFontCollection*,INT,GpFontFamily**,INT*,GpGraphics*);
|
||||
GpStatus WINGDIPAPI GdipGetEmHeight(GDIPCONST GpFontFamily*,INT,UINT16*);
|
||||
GpStatus WINGDIPAPI GdipGetCellAscent(GDIPCONST GpFontFamily*,INT,UINT16*);
|
||||
GpStatus WINGDIPAPI GdipGetCellDescent(GDIPCONST GpFontFamily*,INT,UINT16*);
|
||||
GpStatus WINGDIPAPI GdipGetLineSpacing(GDIPCONST GpFontFamily*,INT,UINT16*);
|
||||
|
||||
/* Graphics functions */
|
||||
GpStatus WINGDIPAPI GdipFlush(GpGraphics*,GpFlushIntention);
|
||||
GpStatus WINGDIPAPI GdipCreateFromHDC(HDC,GpGraphics**);
|
||||
GpStatus WINGDIPAPI GdipCreateFromHDC2(HDC,HANDLE,GpGraphics**);
|
||||
GpStatus WINGDIPAPI GdipCreateFromHWND(HWND,GpGraphics**);
|
||||
GpStatus WINGDIPAPI GdipCreateFromHWNDICM(HWND,GpGraphics**);
|
||||
GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics*);
|
||||
GpStatus WINGDIPAPI GdipGetDC(GpGraphics*,HDC*);
|
||||
GpStatus WINGDIPAPI GdipReleaseDC(GpGraphics*,HDC);
|
||||
GpStatus WINGDIPAPI GdipSetCompositingMode(GpGraphics*,CompositingMode);
|
||||
GpStatus WINGDIPAPI GdipGetCompositingMode(GpGraphics*,CompositingMode*);
|
||||
GpStatus WINGDIPAPI GdipSetRenderingOrigin(GpGraphics*,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipGetRenderingOrigin(GpGraphics*,INT*,INT*);
|
||||
GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics*,CompositingQuality);
|
||||
GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics*,CompositingQuality*);
|
||||
GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics*,SmoothingMode);
|
||||
GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics*,SmoothingMode*);
|
||||
GpStatus WINGDIPAPI GdipSetPixelOffsetMode(GpGraphics*,PixelOffsetMode);
|
||||
GpStatus WINGDIPAPI GdipGetPixelOffsetMode(GpGraphics*,PixelOffsetMode*);
|
||||
GpStatus WINGDIPAPI GdipSetTextRenderingHint(GpGraphics*,TextRenderingHint);
|
||||
GpStatus WINGDIPAPI GdipGetTextRenderingHint(GpGraphics*,TextRenderingHint*);
|
||||
GpStatus WINGDIPAPI GdipSetTextContrast(GpGraphics*,UINT);
|
||||
GpStatus WINGDIPAPI GdipGetTextContrast(GpGraphics*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics*,InterpolationMode);
|
||||
GpStatus WINGDIPAPI GdipGraphicsSetAbort(GpGraphics*,GdiplusAbort*);
|
||||
GpStatus WINGDIPAPI GdipGetInterpolationMode(GpGraphics*,InterpolationMode*);
|
||||
GpStatus WINGDIPAPI GdipSetWorldTransform(GpGraphics*,GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipResetWorldTransform(GpGraphics*);
|
||||
GpStatus WINGDIPAPI GdipMultiplyWorldTransform(GpGraphics*,GDIPCONST GpMatrix*,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipTranslateWorldTransform(GpGraphics*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipScaleWorldTransform(GpGraphics*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipRotateWorldTransform(GpGraphics*,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipGetWorldTransform(GpGraphics*,GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipResetPageTransform(GpGraphics*);
|
||||
GpStatus WINGDIPAPI GdipGetPageUnit(GpGraphics*,GpUnit*);
|
||||
GpStatus WINGDIPAPI GdipGetPageScale(GpGraphics*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipSetPageUnit(GpGraphics*,GpUnit);
|
||||
GpStatus WINGDIPAPI GdipSetPageScale(GpGraphics*,REAL);
|
||||
GpStatus WINGDIPAPI GdipGetDpiX(GpGraphics*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetDpiY(GpGraphics*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipTransformPoints(GpGraphics*,GpCoordinateSpace,GpCoordinateSpace,GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipTransformPointsI(GpGraphics*,GpCoordinateSpace,GpCoordinateSpace,GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipGetNearestColor(GpGraphics*,ARGB*);
|
||||
HPALETTE WINGDIPAPI GdipCreateHalftonePalette(void);
|
||||
GpStatus WINGDIPAPI GdipDrawLine(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawLineI(GpGraphics*,GpPen*,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawLines(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawLinesI(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawArc(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawArcI(GpGraphics*,GpPen*,INT,INT,INT,INT,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawBezier(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawBezierI(GpGraphics*,GpPen*,INT,INT,INT,INT,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawBeziers(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawBeziersI(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawRectangle(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawRectangleI(GpGraphics*,GpPen*,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawRectangles(GpGraphics*,GpPen*,GDIPCONST GpRectF*,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawRectanglesI(GpGraphics*,GpPen*,GDIPCONST GpRect*,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawEllipse(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawEllipseI(GpGraphics*,GpPen*,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawPie(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawPieI(GpGraphics*,GpPen*,INT,INT,INT,INT,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawPolygon(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawPolygonI(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawPath(GpGraphics*,GpPen*,GpPath*);
|
||||
GpStatus WINGDIPAPI GdipDrawCurve(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawCurveI(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawCurve2(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawCurve2I(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawCurve3(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT,INT,INT,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawCurve3I(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT,INT,INT,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawClosedCurve(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawClosedCurveI(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawClosedCurve2(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawClosedCurve2I(GpGraphics*,GpPen*,GDIPCONST GpPoint*,INT,REAL);
|
||||
GpStatus WINGDIPAPI GdipGraphicsClear(GpGraphics*,ARGB);
|
||||
GpStatus WINGDIPAPI GdipFillRectangle(GpGraphics*,GpBrush*,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipFillRectangleI(GpGraphics*,GpBrush*,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipFillRectangles(GpGraphics*,GpBrush*,GDIPCONST GpRectF*,INT);
|
||||
GpStatus WINGDIPAPI GdipFillRectanglesI(GpGraphics*,GpBrush*,GDIPCONST GpRect*,INT);
|
||||
GpStatus WINGDIPAPI GdipFillPolygon(GpGraphics*,GpBrush*,GDIPCONST GpPointF*,INT,GpFillMode);
|
||||
GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,INT,GpFillMode);
|
||||
GpStatus WINGDIPAPI GdipFillPolygon2(GpGraphics*,GpBrush*,GDIPCONST GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipFillPolygon2I(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipFillEllipse(GpGraphics*,GpBrush*,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipFillEllipseI(GpGraphics*,GpBrush*,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipFillPie(GpGraphics*,GpBrush*,REAL,REAL,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipFillPieI(GpGraphics*,GpBrush*,INT,INT,INT,INT,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipFillPath(GpGraphics*,GpBrush*,GpPath*);
|
||||
GpStatus WINGDIPAPI GdipFillClosedCurve(GpGraphics*,GpBrush*,GDIPCONST GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipFillClosedCurveI(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipFillClosedCurve2(GpGraphics*,GpBrush*,GDIPCONST GpPointF*,INT,REAL,GpFillMode);
|
||||
GpStatus WINGDIPAPI GdipFillClosedCurve2I(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,INT,REAL,GpFillMode);
|
||||
GpStatus WINGDIPAPI GdipFillRegion(GpGraphics*,GpBrush*,GpRegion*);
|
||||
GpStatus WINGDIPAPI GdipDrawImage(GpGraphics*,GpImage*,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawImageI(GpGraphics*,GpImage*,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawImageRect(GpGraphics*,GpImage*,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipDrawImageRectI(GpGraphics*,GpImage*,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawImagePoints(GpGraphics*,GpImage*,GDIPCONST GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawImagePointsI(GpGraphics*,GpImage*,GDIPCONST GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipDrawImagePointRect(GpGraphics*,GpImage*,REAL,REAL,REAL,REAL,REAL,REAL,GpUnit);
|
||||
GpStatus WINGDIPAPI GdipDrawImagePointRectI(GpGraphics*,GpImage*,INT,INT,INT,INT,INT,INT,GpUnit);
|
||||
GpStatus WINGDIPAPI GdipDrawImageRectRect(GpGraphics*,GpImage*,REAL,REAL,REAL,REAL,REAL,REAL,REAL,REAL,GpUnit,GDIPCONST GpImageAttributes*,DrawImageAbort,VOID*);
|
||||
GpStatus WINGDIPAPI GdipDrawImageRectRectI(GpGraphics*,GpImage*,INT,INT,INT,INT,INT,INT,INT,INT,GpUnit,GDIPCONST GpImageAttributes*,DrawImageAbort,VOID*);
|
||||
GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics*,GpImage*,GDIPCONST GpPointF*,INT,REAL,REAL,REAL,REAL,GpUnit,GDIPCONST GpImageAttributes*,DrawImageAbort,VOID*);
|
||||
GpStatus WINGDIPAPI GdipDrawImagePointsRectI(GpGraphics*,GpImage*,GDIPCONST GpPoint*,INT,INT,INT,INT,INT,GpUnit,GDIPCONST GpImageAttributes*,DrawImageAbort,VOID*);
|
||||
GpStatus WINGDIPAPI GdipDrawImageFX(GpGraphics*,GpImage*,GpRectF*,GpMatrix*,CGpEffect*,GpImageAttributes*,GpUnit);
|
||||
#ifdef __cplusplus
|
||||
GpStatus WINGDIPAPI GdipEnumerateMetafileDestPoint(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST PointF&,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
|
||||
GpStatus WINGDIPAPI GdipEnumerateMetafileDestPointI(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST Point&,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
|
||||
GpStatus WINGDIPAPI GdipEnumerateMetafileDestRect(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST RectF&,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
|
||||
GpStatus WINGDIPAPI GdipEnumerateMetafileDestRectI(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST Rect&,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
|
||||
#endif
|
||||
GpStatus WINGDIPAPI GdipEnumerateMetafileDestPoints(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST PointF*,INT,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
|
||||
GpStatus WINGDIPAPI GdipEnumerateMetafileDestPointsI(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST Point*,INT,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
|
||||
#ifdef __cplusplus
|
||||
GpStatus WINGDIPAPI GdipEnumerateMetafileSrcRectDestPoint(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST PointF&,GDIPCONST RectF&,Unit,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
|
||||
GpStatus WINGDIPAPI GdipEnumerateMetafileSrcRectDestPointI(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST Point&,GDIPCONST Rect&,Unit,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
|
||||
GpStatus WINGDIPAPI GdipEnumerateMetafileSrcRectDestRect(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST RectF&,GDIPCONST RectF&,Unit,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
|
||||
GpStatus WINGDIPAPI GdipEnumerateMetafileSrcRectDestRectI(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST Rect&,GDIPCONST Rect&,Unit,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
|
||||
GpStatus WINGDIPAPI GdipEnumerateMetafileSrcRectDestPoints(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST PointF*,INT,GDIPCONST RectF&,Unit,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
|
||||
GpStatus WINGDIPAPI GdipEnumerateMetafileSrcRectDestPointsI(GpGraphics*,GDIPCONST GpMetafile*,GDIPCONST Point*,INT,GDIPCONST Rect&,Unit,EnumerateMetafileProc,VOID*,GDIPCONST GpImageAttributes*);
|
||||
#endif
|
||||
GpStatus WINGDIPAPI GdipSetClipGraphics(GpGraphics*,GpGraphics*,CombineMode);
|
||||
GpStatus WINGDIPAPI GdipSetClipRect(GpGraphics*,REAL,REAL,REAL,REAL,CombineMode);
|
||||
GpStatus WINGDIPAPI GdipSetClipRectI(GpGraphics*,INT,INT,INT,INT,CombineMode);
|
||||
GpStatus WINGDIPAPI GdipSetClipPath(GpGraphics*,GpPath*,CombineMode);
|
||||
GpStatus WINGDIPAPI GdipSetClipRegion(GpGraphics*,GpRegion*,CombineMode);
|
||||
GpStatus WINGDIPAPI GdipSetClipHrgn(GpGraphics*,HRGN,CombineMode);
|
||||
GpStatus WINGDIPAPI GdipResetClip(GpGraphics*);
|
||||
GpStatus WINGDIPAPI GdipTranslateClip(GpGraphics*,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipTranslateClipI(GpGraphics*,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipGetClip(GpGraphics*,GpRegion*);
|
||||
GpStatus WINGDIPAPI GdipGetClipBounds(GpGraphics*,GpRectF*);
|
||||
GpStatus WINGDIPAPI GdipGetClipBoundsI(GpGraphics*,GpRect*);
|
||||
GpStatus WINGDIPAPI GdipIsClipEmpty(GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipGetVisibleClipBounds(GpGraphics*,GpRectF*);
|
||||
GpStatus WINGDIPAPI GdipGetVisibleClipBoundsI(GpGraphics*,GpRect*);
|
||||
GpStatus WINGDIPAPI GdipIsVisibleClipEmpty(GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsVisiblePoint(GpGraphics*,REAL,REAL,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsVisiblePointI(GpGraphics*,INT,INT,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsVisibleRect(GpGraphics*,REAL,REAL,REAL,REAL,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsVisibleRectI(GpGraphics*,INT,INT,INT,INT,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipSaveGraphics(GpGraphics*,GraphicsState*);
|
||||
GpStatus WINGDIPAPI GdipRestoreGraphics(GpGraphics*,GraphicsState);
|
||||
GpStatus WINGDIPAPI GdipBeginContainer(GpGraphics*,GDIPCONST GpRectF*,GDIPCONST GpRectF*,GpUnit,GraphicsContainer*);
|
||||
GpStatus WINGDIPAPI GdipBeginContainerI(GpGraphics*,GDIPCONST GpRect*,GDIPCONST GpRect*,GpUnit,GraphicsContainer*);
|
||||
GpStatus WINGDIPAPI GdipBeginContainer2(GpGraphics*,GraphicsContainer*);
|
||||
GpStatus WINGDIPAPI GdipEndContainer(GpGraphics*,GraphicsContainer);
|
||||
GpStatus WINGDIPAPI GdipComment(GpGraphics*,UINT,GDIPCONST BYTE*);
|
||||
|
||||
/* GraphicsPath functions */
|
||||
GpStatus WINGDIPAPI GdipCreatePath(GpFillMode,GpPath**);
|
||||
GpStatus WINGDIPAPI GdipCreatePath2(GDIPCONST GpPointF*,GDIPCONST BYTE*,INT,GpFillMode,GpPath**);
|
||||
GpStatus WINGDIPAPI GdipCreatePath2I(GDIPCONST GpPoint*,GDIPCONST BYTE*,INT,GpFillMode,GpPath**);
|
||||
GpStatus WINGDIPAPI GdipClonePath(GpPath*,GpPath**);
|
||||
GpStatus WINGDIPAPI GdipDeletePath(GpPath*);
|
||||
GpStatus WINGDIPAPI GdipResetPath(GpPath*);
|
||||
GpStatus WINGDIPAPI GdipGetPointCount(GpPath*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetPathTypes(GpPath*,BYTE*,INT);
|
||||
GpStatus WINGDIPAPI GdipGetPathPoints(GpPath*,GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipGetPathPointsI(GpPath*,GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipGetPathFillMode(GpPath*,GpFillMode*);
|
||||
GpStatus WINGDIPAPI GdipSetPathFillMode(GpPath*,GpFillMode);
|
||||
GpStatus WINGDIPAPI GdipGetPathData(GpPath*,GpPathData*);
|
||||
GpStatus WINGDIPAPI GdipStartPathFigure(GpPath*);
|
||||
GpStatus WINGDIPAPI GdipClosePathFigure(GpPath*);
|
||||
GpStatus WINGDIPAPI GdipClosePathFigures(GpPath*);
|
||||
GpStatus WINGDIPAPI GdipSetPathMarker(GpPath*);
|
||||
GpStatus WINGDIPAPI GdipClearPathMarkers(GpPath*);
|
||||
GpStatus WINGDIPAPI GdipReversePath(GpPath*);
|
||||
GpStatus WINGDIPAPI GdipGetPathLastPoint(GpPath*,GpPointF*);
|
||||
GpStatus WINGDIPAPI GdipAddPathLine(GpPath*,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathLine2(GpPath*,GDIPCONST GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathArc(GpPath*,REAL,REAL,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathBezier(GpPath*,REAL,REAL,REAL,REAL,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathBeziers(GpPath*,GDIPCONST GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathCurve(GpPath*,GDIPCONST GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathCurve2(GpPath*,GDIPCONST GpPointF*,INT,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathCurve3(GpPath*,GDIPCONST GpPointF*,INT,INT,INT,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathClosedCurve(GpPath*,GDIPCONST GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathClosedCurve2(GpPath*,GDIPCONST GpPointF*,INT,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathRectangle(GpPath*,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathRectangles(GpPath*,GDIPCONST GpRectF*,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathEllipse(GpPath*,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathPie(GpPath*,REAL,REAL,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathPolygon(GpPath*,GDIPCONST GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathPath(GpPath*,GDIPCONST GpPath*,BOOL);
|
||||
GpStatus WINGDIPAPI GdipAddPathString(GpPath*,GDIPCONST WCHAR*,INT,GDIPCONST GpFontFamily*,INT,REAL,GDIPCONST RectF*,GDIPCONST GpStringFormat*);
|
||||
GpStatus WINGDIPAPI GdipAddPathStringI(GpPath*,GDIPCONST WCHAR*,INT,GDIPCONST GpFontFamily*,INT,REAL,GDIPCONST Rect*,GDIPCONST GpStringFormat*);
|
||||
GpStatus WINGDIPAPI GdipAddPathLineI(GpPath*,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathLine2I(GpPath*,GDIPCONST GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathArcI(GpPath*,INT,INT,INT,INT,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathBezierI(GpPath*,INT,INT,INT,INT,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathBeziersI(GpPath*,GDIPCONST GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathCurveI(GpPath*,GDIPCONST GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathCurve2I(GpPath*,GDIPCONST GpPoint*,INT,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathCurve3I(GpPath*,GDIPCONST GpPoint*,INT,INT,INT,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathClosedCurveI(GpPath*,GDIPCONST GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathClosedCurve2I(GpPath*,GDIPCONST GpPoint*,INT,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathRectangleI(GpPath*,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathRectanglesI(GpPath*,GDIPCONST GpRect*,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathEllipseI(GpPath*,INT,INT,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipAddPathPieI(GpPath*,INT,INT,INT,INT,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipAddPathPolygonI(GpPath*,GDIPCONST GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipFlattenPath(GpPath*,GpMatrix*,REAL);
|
||||
GpStatus WINGDIPAPI GdipWindingModeOutline(GpPath*,GpMatrix*,REAL);
|
||||
GpStatus WINGDIPAPI GdipWidenPath(GpPath*,GpPen*,GpMatrix*,REAL);
|
||||
GpStatus WINGDIPAPI GdipWarpPath(GpPath*,GpMatrix*,GDIPCONST GpPointF*,INT,REAL,REAL,REAL,REAL,WarpMode,REAL);
|
||||
GpStatus WINGDIPAPI GdipTransformPath(GpPath*,GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipGetPathWorldBounds(GpPath*,GpRectF*,GDIPCONST GpMatrix*,GDIPCONST GpPen*);
|
||||
GpStatus WINGDIPAPI GdipGetPathWorldBoundsI(GpPath*,GpRect*,GDIPCONST GpMatrix*,GDIPCONST GpPen*);
|
||||
GpStatus WINGDIPAPI GdipIsVisiblePathPoint(GpPath*,REAL,REAL,GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsVisiblePathPointI(GpPath*,INT,INT,GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsOutlineVisiblePathPoint(GpPath*,REAL,REAL,GpPen*,GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsOutlineVisiblePathPointI(GpPath*,INT,INT,GpPen*,GpGraphics*,BOOL*);
|
||||
|
||||
/* HatchBrush functions */
|
||||
GpStatus WINGDIPAPI GdipCreateHatchBrush(GpHatchStyle,ARGB,ARGB,GpHatch**);
|
||||
GpStatus WINGDIPAPI GdipGetHatchStyle(GpHatch*,GpHatchStyle*);
|
||||
GpStatus WINGDIPAPI GdipGetHatchForegroundColor(GpHatch*,ARGB*);
|
||||
GpStatus WINGDIPAPI GdipGetHatchBackgroundColor(GpHatch*,ARGB*);
|
||||
|
||||
/* Image functions */
|
||||
GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream*,GpImage**);
|
||||
GpStatus WINGDIPAPI GdipLoadImageFromFile(GDIPCONST WCHAR*,GpImage**);
|
||||
GpStatus WINGDIPAPI GdipLoadImageFromStreamICM(IStream*,GpImage**);
|
||||
GpStatus WINGDIPAPI GdipLoadImageFromFileICM(GDIPCONST WCHAR*,GpImage**);
|
||||
GpStatus WINGDIPAPI GdipCloneImage(GpImage*,GpImage**);
|
||||
GpStatus WINGDIPAPI GdipDisposeImage(GpImage*);
|
||||
GpStatus WINGDIPAPI GdipSaveImageToFile(GpImage*,GDIPCONST WCHAR*,GDIPCONST CLSID*,GDIPCONST EncoderParameters*);
|
||||
GpStatus WINGDIPAPI GdipSaveImageToStream(GpImage*,IStream*,GDIPCONST CLSID*,GDIPCONST EncoderParameters*);
|
||||
GpStatus WINGDIPAPI GdipSaveAdd(GpImage*,GDIPCONST EncoderParameters*);
|
||||
GpStatus WINGDIPAPI GdipSaveAddImage(GpImage*,GpImage*,GDIPCONST EncoderParameters*);
|
||||
GpStatus WINGDIPAPI GdipGetImageGraphicsContext(GpImage*,GpGraphics**);
|
||||
GpStatus WINGDIPAPI GdipGetImageBounds(GpImage*,GpRectF*,GpUnit*);
|
||||
GpStatus WINGDIPAPI GdipGetImageDimension(GpImage*,REAL*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetImageType(GpImage*,ImageType*);
|
||||
GpStatus WINGDIPAPI GdipGetImageWidth(GpImage*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipGetImageHeight(GpImage*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipGetImageHorizontalResolution(GpImage*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetImageVerticalResolution(GpImage*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetImageFlags(GpImage*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipGetImageRawFormat(GpImage*,GUID*);
|
||||
GpStatus WINGDIPAPI GdipGetImagePixelFormat(GpImage*,PixelFormat*);
|
||||
GpStatus WINGDIPAPI GdipGetImageThumbnail(GpImage*,UINT,UINT,GpImage**,GetThumbnailImageAbort,VOID*);
|
||||
GpStatus WINGDIPAPI GdipGetEncoderParameterListSize(GpImage*,GDIPCONST CLSID*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipGetEncoderParameterList(GpImage*,GDIPCONST CLSID*,UINT,EncoderParameters*);
|
||||
GpStatus WINGDIPAPI GdipImageGetFrameDimensionsCount(GpImage*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipImageGetFrameDimensionsList(GpImage*,GUID*,UINT);
|
||||
GpStatus WINGDIPAPI GdipImageGetFrameCount(GpImage*,GDIPCONST GUID*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipImageSelectActiveFrame(GpImage*,GDIPCONST GUID*,UINT);
|
||||
GpStatus WINGDIPAPI GdipImageRotateFlip(GpImage*,RotateFlipType);
|
||||
GpStatus WINGDIPAPI GdipGetImagePalette(GpImage*,ColorPalette*,INT);
|
||||
GpStatus WINGDIPAPI GdipSetImagePalette(GpImage*,GDIPCONST ColorPalette*);
|
||||
GpStatus WINGDIPAPI GdipGetImagePaletteSize(GpImage*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetPropertyCount(GpImage*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipGetPropertyIdList(GpImage*,UINT,PROPID*);
|
||||
GpStatus WINGDIPAPI GdipGetPropertyItemSize(GpImage*,PROPID,UINT*);
|
||||
GpStatus WINGDIPAPI GdipGetPropertyItem(GpImage*,PROPID,UINT,PropertyItem*);
|
||||
GpStatus WINGDIPAPI GdipGetPropertySize(GpImage*,UINT*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipGetAllPropertyItems(GpImage*,UINT,UINT,PropertyItem*);
|
||||
GpStatus WINGDIPAPI GdipRemovePropertyItem(GpImage*,PROPID);
|
||||
GpStatus WINGDIPAPI GdipSetPropertyItem(GpImage*,GDIPCONST PropertyItem*);
|
||||
GpStatus WINGDIPAPI GdipFindFirstImageItem(GpImage*,ImageItemData*);
|
||||
GpStatus WINGDIPAPI GdipFindNextImageItem(GpImage*,ImageItemData*);
|
||||
GpStatus WINGDIPAPI GdipGetImageItemData(GpImage*,ImageItemData*);
|
||||
GpStatus WINGDIPAPI GdipImageSetAbort(GpImage*,GdiplusAbort*);
|
||||
GpStatus WINGDIPAPI GdipImageForceValidation(GpImage*);
|
||||
|
||||
/* Image codec functions */
|
||||
GpStatus WINGDIPAPI GdipGetImageDecodersSize(UINT*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipGetImageDecoders(UINT,UINT,ImageCodecInfo*);
|
||||
GpStatus WINGDIPAPI GdipGetImageEncodersSize(UINT*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipGetImageEncoders(UINT,UINT,ImageCodecInfo*);
|
||||
|
||||
/* ImageAttributes functions */
|
||||
GpStatus WINGDIPAPI GdipCreateImageAttributes(GpImageAttributes**);
|
||||
GpStatus WINGDIPAPI GdipCloneImageAttributes(GDIPCONST GpImageAttributes*,GpImageAttributes**);
|
||||
GpStatus WINGDIPAPI GdipDisposeImageAttributes(GpImageAttributes*);
|
||||
GpStatus WINGDIPAPI GdipSetImageAttributesToIdentity(GpImageAttributes*,ColorAdjustType);
|
||||
GpStatus WINGDIPAPI GdipResetImageAttributes(GpImageAttributes*,ColorAdjustType);
|
||||
GpStatus WINGDIPAPI GdipSetImageAttributesColorMatrix(GpImageAttributes*,ColorAdjustType,BOOL,GDIPCONST ColorMatrix*,GDIPCONST ColorMatrix*,ColorMatrixFlags);
|
||||
GpStatus WINGDIPAPI GdipSetImageAttributesThreshold(GpImageAttributes*,ColorAdjustType,BOOL,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetImageAttributesGamma(GpImageAttributes*,ColorAdjustType,BOOL,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetImageAttributesNoOp(GpImageAttributes*,ColorAdjustType,BOOL);
|
||||
GpStatus WINGDIPAPI GdipSetImageAttributesColorKeys(GpImageAttributes*,ColorAdjustType,BOOL,ARGB,ARGB);
|
||||
GpStatus WINGDIPAPI GdipSetImageAttributesOutputChannel(GpImageAttributes*,ColorAdjustType,BOOL,ColorChannelFlags);
|
||||
GpStatus WINGDIPAPI GdipSetImageAttributesOutputChannelColorProfile(GpImageAttributes*,ColorAdjustType,BOOL,GDIPCONST WCHAR*);
|
||||
GpStatus WINGDIPAPI GdipSetImageAttributesRemapTable(GpImageAttributes*,ColorAdjustType,BOOL,UINT,GDIPCONST ColorMap*);
|
||||
GpStatus WINGDIPAPI GdipSetImageAttributesWrapMode(GpImageAttributes*,WrapMode,ARGB,BOOL);
|
||||
GpStatus WINGDIPAPI GdipSetImageAttributesICMMode(GpImageAttributes*,BOOL);
|
||||
GpStatus WINGDIPAPI GdipGetImageAttributesAdjustedPalette(GpImageAttributes*,ColorPalette*,ColorAdjustType);
|
||||
GpStatus WINGDIPAPI GdipSetImageAttributesCachedBackground(GpImageAttributes*,BOOL);
|
||||
|
||||
/* LinearGradientBrush functions */
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrush(GDIPCONST GpPointF*,GDIPCONST GpPointF*,ARGB,ARGB,GpWrapMode,GpLineGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrushI(GDIPCONST GpPoint*,GDIPCONST GpPoint*,ARGB,ARGB,GpWrapMode,GpLineGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrushFromRect(GDIPCONST GpRectF*,ARGB,ARGB,LinearGradientMode,GpWrapMode,GpLineGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrushFromRectI(GDIPCONST GpRect*,ARGB,ARGB,LinearGradientMode,GpWrapMode,GpLineGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrushFromRectWithAngle(GDIPCONST GpRectF*,ARGB,ARGB,REAL,BOOL,GpWrapMode,GpLineGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreateLineBrushFromRectWithAngleI(GDIPCONST GpRect*,ARGB,ARGB,REAL,BOOL,GpWrapMode,GpLineGradient**);
|
||||
GpStatus WINGDIPAPI GdipSetLineColors(GpLineGradient*,ARGB,ARGB);
|
||||
GpStatus WINGDIPAPI GdipGetLineColors(GpLineGradient*,ARGB*);
|
||||
GpStatus WINGDIPAPI GdipGetLineRect(GpLineGradient*,GpRectF*);
|
||||
GpStatus WINGDIPAPI GdipGetLineRectI(GpLineGradient*,GpRect*);
|
||||
GpStatus WINGDIPAPI GdipSetLineGammaCorrection(GpLineGradient*,BOOL);
|
||||
GpStatus WINGDIPAPI GdipGetLineGammaCorrection(GpLineGradient*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipGetLineBlendCount(GpLineGradient*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetLineBlend(GpLineGradient*,REAL*,REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipSetLineBlend(GpLineGradient*,GDIPCONST REAL*,GDIPCONST REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipGetLinePresetBlendCount(GpLineGradient*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetLinePresetBlend(GpLineGradient*,ARGB*,REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipSetLinePresetBlend(GpLineGradient*,GDIPCONST ARGB*,GDIPCONST REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipSetLineSigmaBlend(GpLineGradient*,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetLineLinearBlend(GpLineGradient*,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetLineWrapMode(GpLineGradient*,GpWrapMode);
|
||||
GpStatus WINGDIPAPI GdipGetLineWrapMode(GpLineGradient*,GpWrapMode*);
|
||||
GpStatus WINGDIPAPI GdipGetLineTransform(GpLineGradient*,GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipSetLineTransform(GpLineGradient*,GDIPCONST GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipResetLineTransform(GpLineGradient*);
|
||||
GpStatus WINGDIPAPI GdipMultiplyLineTransform(GpLineGradient*,GDIPCONST GpMatrix*,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipTranslateLineTransform(GpLineGradient*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipScaleLineTransform(GpLineGradient*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipRotateLineTransform(GpLineGradient*,REAL,GpMatrixOrder);
|
||||
|
||||
/* Matrix functions */
|
||||
GpStatus WINGDIPAPI GdipCreateMatrix(GpMatrix**);
|
||||
GpStatus WINGDIPAPI GdipCreateMatrix2(REAL,REAL,REAL,REAL,REAL,REAL,GpMatrix**);
|
||||
GpStatus WINGDIPAPI GdipCreateMatrix3(GDIPCONST GpRectF*,GDIPCONST GpPointF*,GpMatrix**);
|
||||
GpStatus WINGDIPAPI GdipCreateMatrix3I(GDIPCONST GpRect*,GDIPCONST GpPoint*,GpMatrix**);
|
||||
GpStatus WINGDIPAPI GdipCloneMatrix(GpMatrix*,GpMatrix**);
|
||||
GpStatus WINGDIPAPI GdipDeleteMatrix(GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipSetMatrixElements(GpMatrix*,REAL,REAL,REAL,REAL,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipMultiplyMatrix(GpMatrix*,GpMatrix*,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipTranslateMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipScaleMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipRotateMatrix(GpMatrix*,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipShearMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipInvertMatrix(GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipTransformMatrixPoints(GpMatrix*,GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipTransformMatrixPointsI(GpMatrix*,GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipVectorTransformMatrixPoints(GpMatrix*,GpPointF*,INT);
|
||||
GpStatus WINGDIPAPI GdipVectorTransformMatrixPointsI(GpMatrix*,GpPoint*,INT);
|
||||
GpStatus WINGDIPAPI GdipGetMatrixElements(GDIPCONST GpMatrix*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipIsMatrixInvertible(GDIPCONST GpMatrix*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsMatrixIdentity(GDIPCONST GpMatrix*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsMatrixEqual(GDIPCONST GpMatrix*,GDIPCONST GpMatrix*,BOOL*);
|
||||
|
||||
/* Metafile functions */
|
||||
GpStatus WINGDIPAPI GdipGetMetafileHeaderFromEmf(HENHMETAFILE,MetafileHeader*);
|
||||
GpStatus WINGDIPAPI GdipGetMetafileHeaderFromFile(GDIPCONST WCHAR*,MetafileHeader*);
|
||||
GpStatus WINGDIPAPI GdipGetMetafileHeaderFromStream(IStream*,MetafileHeader*);
|
||||
GpStatus WINGDIPAPI GdipGetMetafileHeaderFromMetafile(GpMetafile*,MetafileHeader*);
|
||||
GpStatus WINGDIPAPI GdipGetHemfFromMetafile(GpMetafile*,HENHMETAFILE*);
|
||||
GpStatus WINGDIPAPI GdipCreateStreamOnFile(GDIPCONST WCHAR*,UINT,IStream**);
|
||||
GpStatus WINGDIPAPI GdipCreateMetafileFromWmf(HMETAFILE,BOOL,GDIPCONST WmfPlaceableFileHeader*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipCreateMetafileFromEmf(HENHMETAFILE,BOOL,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipCreateMetafileFromFile(GDIPCONST WCHAR*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipCreateMetafileFromWmfFile(GDIPCONST WCHAR*,GDIPCONST WmfPlaceableFileHeader*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipCreateMetafileFromStream(IStream*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipRecordMetafile(HDC,EmfType,GDIPCONST GpRectF*,MetafileFrameUnit,GDIPCONST WCHAR*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipRecordMetafileI(HDC,EmfType,GDIPCONST GpRect*,MetafileFrameUnit,GDIPCONST WCHAR*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipRecordMetafileFileName(GDIPCONST WCHAR*,HDC,EmfType,GDIPCONST GpRectF*,MetafileFrameUnit,GDIPCONST WCHAR*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipRecordMetafileFileNameI(GDIPCONST WCHAR*,HDC,EmfType,GDIPCONST GpRect*,MetafileFrameUnit,GDIPCONST WCHAR*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipRecordMetafileStream(IStream*,HDC,EmfType,GDIPCONST GpRectF*,MetafileFrameUnit,GDIPCONST WCHAR*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipRecordMetafileStreamI(IStream*,HDC,EmfType,GDIPCONST GpRect*,MetafileFrameUnit,GDIPCONST WCHAR*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipPlayMetafileRecord(GDIPCONST GpMetafile*,EmfPlusRecordType,UINT,UINT,GDIPCONST BYTE*);
|
||||
GpStatus WINGDIPAPI GdipSetMetafileDownLevelRasterizationLimit(GpMetafile*,UINT);
|
||||
GpStatus WINGDIPAPI GdipGetMetafileDownLevelRasterizationLimit(GDIPCONST GpMetafile*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipConvertToEmfPlus(GDIPCONST GpGraphics*,GpMetafile*,BOOL*,EmfType,GDIPCONST WCHAR*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipConvertToEmfPlusToFile(GDIPCONST GpGraphics*,GpMetafile*,BOOL*,GDIPCONST WCHAR*,EmfType,GDIPCONST WCHAR*,GpMetafile**);
|
||||
GpStatus WINGDIPAPI GdipConvertToEmfPlusToStream(GDIPCONST GpGraphics*,GpMetafile*,BOOL*,IStream*,EmfType,GDIPCONST WCHAR*,GpMetafile**);
|
||||
UINT WINGDIPAPI GdipEmfToWmfBits(HENHMETAFILE,UINT,LPBYTE,INT,INT);
|
||||
|
||||
/* PathGradientBrush functions */
|
||||
GpStatus WINGDIPAPI GdipCreatePathGradient(GDIPCONST GpPointF*,INT,GpWrapMode,GpPathGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreatePathGradientI(GDIPCONST GpPoint*,INT,GpWrapMode,GpPathGradient**);
|
||||
GpStatus WINGDIPAPI GdipCreatePathGradientFromPath(GDIPCONST GpPath*,GpPathGradient**);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientCenterColor(GpPathGradient*,ARGB*);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientCenterColor(GpPathGradient*,ARGB);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientSurroundColorsWithCount(GpPathGradient*,ARGB*,INT*);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientSurroundColorsWithCount(GpPathGradient*,GDIPCONST ARGB*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientPath(GpPathGradient*,GpPath*);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientPath(GpPathGradient*,GDIPCONST GpPath*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientCenterPoint(GpPathGradient*,GpPointF*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientCenterPointI(GpPathGradient*,GpPoint*);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientCenterPoint(GpPathGradient*,GDIPCONST GpPointF*);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientCenterPointI(GpPathGradient*,GDIPCONST GpPoint*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientRect(GpPathGradient*,GpRectF*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientRectI(GpPathGradient*,GpRect*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientPointCount(GpPathGradient*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientSurroundColorCount(GpPathGradient*,INT*);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientGammaCorrection(GpPathGradient*,BOOL);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientGammaCorrection(GpPathGradient*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientBlendCount(GpPathGradient*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientBlend(GpPathGradient*,REAL*,REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientBlend(GpPathGradient*,GDIPCONST REAL*,GDIPCONST REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientPresetBlendCount(GpPathGradient*,INT*);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientPresetBlend(GpPathGradient*,ARGB*,REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientPresetBlend(GpPathGradient*,GDIPCONST ARGB*,GDIPCONST REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientSigmaBlend(GpPathGradient*,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientLinearBlend(GpPathGradient*,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientWrapMode(GpPathGradient*,GpWrapMode*);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientWrapMode(GpPathGradient*,GpWrapMode);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientTransform(GpPathGradient*,GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientTransform(GpPathGradient*,GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipResetPathGradientTransform(GpPathGradient*);
|
||||
GpStatus WINGDIPAPI GdipMultiplyPathGradientTransform(GpPathGradient*,GDIPCONST GpMatrix*,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipTranslatePathGradientTransform(GpPathGradient*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipScalePathGradientTransform(GpPathGradient*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipRotatePathGradientTransform(GpPathGradient*,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipGetPathGradientFocusScales(GpPathGradient*,REAL*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipSetPathGradientFocusScales(GpPathGradient*,REAL,REAL);
|
||||
|
||||
/* PathIterator functions */
|
||||
GpStatus WINGDIPAPI GdipCreatePathIter(GpPathIterator**,GpPath*);
|
||||
GpStatus WINGDIPAPI GdipDeletePathIter(GpPathIterator*);
|
||||
GpStatus WINGDIPAPI GdipPathIterNextSubpath(GpPathIterator*,INT*,INT*,INT*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipPathIterNextSubpathPath(GpPathIterator*,INT*,GpPath*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipPathIterNextPathType(GpPathIterator*,INT*,BYTE*,INT*,INT*);
|
||||
GpStatus WINGDIPAPI GdipPathIterNextMarker(GpPathIterator*,INT*,INT*,INT*);
|
||||
GpStatus WINGDIPAPI GdipPathIterNextMarkerPath(GpPathIterator*,INT*,GpPath*);
|
||||
GpStatus WINGDIPAPI GdipPathIterGetCount(GpPathIterator*,INT*);
|
||||
GpStatus WINGDIPAPI GdipPathIterGetSubpathCount(GpPathIterator*,INT*);
|
||||
GpStatus WINGDIPAPI GdipPathIterIsValid(GpPathIterator*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipPathIterHasCurve(GpPathIterator*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipPathIterRewind(GpPathIterator*);
|
||||
GpStatus WINGDIPAPI GdipPathIterEnumerate(GpPathIterator*,INT*,GpPointF*,BYTE*,INT);
|
||||
GpStatus WINGDIPAPI GdipPathIterCopyData(GpPathIterator*,INT*,GpPointF*,BYTE*,INT,INT);
|
||||
|
||||
/* Pen functions */
|
||||
GpStatus WINGDIPAPI GdipCreatePen1(ARGB,REAL,GpUnit,GpPen**);
|
||||
GpStatus WINGDIPAPI GdipCreatePen2(GpBrush*,REAL,GpUnit,GpPen**);
|
||||
GpStatus WINGDIPAPI GdipClonePen(GpPen*,GpPen**);
|
||||
GpStatus WINGDIPAPI GdipDeletePen(GpPen*);
|
||||
GpStatus WINGDIPAPI GdipSetPenWidth(GpPen*,REAL);
|
||||
GpStatus WINGDIPAPI GdipGetPenWidth(GpPen*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipSetPenUnit(GpPen*,GpUnit);
|
||||
GpStatus WINGDIPAPI GdipGetPenUnit(GpPen*,GpUnit*);
|
||||
GpStatus WINGDIPAPI GdipSetPenLineCap197819(GpPen*,GpLineCap,GpLineCap,GpDashCap);
|
||||
GpStatus WINGDIPAPI GdipSetPenStartCap(GpPen*,GpLineCap);
|
||||
GpStatus WINGDIPAPI GdipSetPenEndCap(GpPen*,GpLineCap);
|
||||
GpStatus WINGDIPAPI GdipSetPenDashCap197819(GpPen*,GpDashCap);
|
||||
GpStatus WINGDIPAPI GdipGetPenStartCap(GpPen*,GpLineCap*);
|
||||
GpStatus WINGDIPAPI GdipGetPenEndCap(GpPen*,GpLineCap*);
|
||||
GpStatus WINGDIPAPI GdipGetPenDashCap197819(GpPen*,GpDashCap*);
|
||||
GpStatus WINGDIPAPI GdipSetPenLineJoin(GpPen*,GpLineJoin);
|
||||
GpStatus WINGDIPAPI GdipGetPenLineJoin(GpPen*,GpLineJoin*);
|
||||
GpStatus WINGDIPAPI GdipSetPenCustomStartCap(GpPen*,GpCustomLineCap*);
|
||||
GpStatus WINGDIPAPI GdipGetPenCustomStartCap(GpPen*,GpCustomLineCap**);
|
||||
GpStatus WINGDIPAPI GdipSetPenCustomEndCap(GpPen*,GpCustomLineCap*);
|
||||
GpStatus WINGDIPAPI GdipGetPenCustomEndCap(GpPen*,GpCustomLineCap**);
|
||||
GpStatus WINGDIPAPI GdipSetPenMiterLimit(GpPen*,REAL);
|
||||
GpStatus WINGDIPAPI GdipGetPenMiterLimit(GpPen*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipSetPenMode(GpPen*,GpPenAlignment);
|
||||
GpStatus WINGDIPAPI GdipGetPenMode(GpPen*,GpPenAlignment*);
|
||||
GpStatus WINGDIPAPI GdipSetPenTransform(GpPen*,GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipGetPenTransform(GpPen*,GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipResetPenTransform(GpPen*);
|
||||
GpStatus WINGDIPAPI GdipMultiplyPenTransform(GpPen*,GDIPCONST GpMatrix*,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipTranslatePenTransform(GpPen*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipScalePenTransform(GpPen*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipRotatePenTransform(GpPen*,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipSetPenColor(GpPen*,ARGB);
|
||||
GpStatus WINGDIPAPI GdipGetPenColor(GpPen*,ARGB*);
|
||||
GpStatus WINGDIPAPI GdipSetPenBrushFill(GpPen*,GpBrush*);
|
||||
GpStatus WINGDIPAPI GdipGetPenBrushFill(GpPen*,GpBrush**);
|
||||
GpStatus WINGDIPAPI GdipGetPenFillType(GpPen*,GpPenType*);
|
||||
GpStatus WINGDIPAPI GdipGetPenDashStyle(GpPen*,GpDashStyle*);
|
||||
GpStatus WINGDIPAPI GdipSetPenDashStyle(GpPen*,GpDashStyle);
|
||||
GpStatus WINGDIPAPI GdipGetPenDashOffset(GpPen*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipSetPenDashOffset(GpPen*,REAL);
|
||||
GpStatus WINGDIPAPI GdipGetPenDashCount(GpPen*,INT*);
|
||||
GpStatus WINGDIPAPI GdipSetPenDashArray(GpPen*,GDIPCONST REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipGetPenDashArray(GpPen*,REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipGetPenCompoundCount(GpPen*,INT*);
|
||||
GpStatus WINGDIPAPI GdipSetPenCompoundArray(GpPen*,GDIPCONST REAL*,INT);
|
||||
GpStatus WINGDIPAPI GdipGetPenCompoundArray(GpPen*,REAL*,INT);
|
||||
|
||||
/* Region functions */
|
||||
GpStatus WINGDIPAPI GdipCreateRegion(GpRegion**);
|
||||
GpStatus WINGDIPAPI GdipCreateRegionRect(GDIPCONST GpRectF*,GpRegion**);
|
||||
GpStatus WINGDIPAPI GdipCreateRegionRectI(GDIPCONST GpRect*,GpRegion**);
|
||||
GpStatus WINGDIPAPI GdipCreateRegionPath(GpPath*,GpRegion**);
|
||||
GpStatus WINGDIPAPI GdipCreateRegionRgnData(GDIPCONST BYTE*,INT,GpRegion**);
|
||||
GpStatus WINGDIPAPI GdipCreateRegionHrgn(HRGN,GpRegion**);
|
||||
GpStatus WINGDIPAPI GdipCloneRegion(GpRegion*,GpRegion**);
|
||||
GpStatus WINGDIPAPI GdipDeleteRegion(GpRegion*);
|
||||
GpStatus WINGDIPAPI GdipSetInfinite(GpRegion*);
|
||||
GpStatus WINGDIPAPI GdipSetEmpty(GpRegion*);
|
||||
GpStatus WINGDIPAPI GdipCombineRegionRect(GpRegion*,GDIPCONST GpRectF*,CombineMode);
|
||||
GpStatus WINGDIPAPI GdipCombineRegionRectI(GpRegion*,GDIPCONST GpRect*,CombineMode);
|
||||
GpStatus WINGDIPAPI GdipCombineRegionPath(GpRegion*,GpPath*,CombineMode);
|
||||
GpStatus WINGDIPAPI GdipCombineRegionRegion(GpRegion*,GpRegion*,CombineMode);
|
||||
GpStatus WINGDIPAPI GdipTranslateRegion(GpRegion*,REAL,REAL);
|
||||
GpStatus WINGDIPAPI GdipTranslateRegionI(GpRegion*,INT,INT);
|
||||
GpStatus WINGDIPAPI GdipTransformRegion(GpRegion*,GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipGetRegionBounds(GpRegion*,GpGraphics*,GpRectF*);
|
||||
GpStatus WINGDIPAPI GdipGetRegionBoundsI(GpRegion*,GpGraphics*,GpRect*);
|
||||
GpStatus WINGDIPAPI GdipGetRegionHRgn(GpRegion*,GpGraphics*,HRGN*);
|
||||
GpStatus WINGDIPAPI GdipIsEmptyRegion(GpRegion*,GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsInfiniteRegion(GpRegion*,GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsEqualRegion(GpRegion*,GpRegion*,GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipGetRegionDataSize(GpRegion*,UINT*);
|
||||
GpStatus WINGDIPAPI GdipGetRegionData(GpRegion*,BYTE*,UINT,UINT*);
|
||||
GpStatus WINGDIPAPI GdipIsVisibleRegionPoint(GpRegion*,REAL,REAL,GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsVisibleRegionPointI(GpRegion*,INT,INT,GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsVisibleRegionRect(GpRegion*,REAL,REAL,REAL,REAL,GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipIsVisibleRegionRectI(GpRegion*,INT,INT,INT,INT,GpGraphics*,BOOL*);
|
||||
GpStatus WINGDIPAPI GdipGetRegionScansCount(GpRegion*,UINT*,GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipGetRegionScans(GpRegion*,GpRectF*,INT*,GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipGetRegionScansI(GpRegion*,GpRect*,INT*,GpMatrix*);
|
||||
|
||||
/* SolidBrush functions */
|
||||
GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB,GpSolidFill**);
|
||||
GpStatus WINGDIPAPI GdipSetSolidFillColor(GpSolidFill*,ARGB);
|
||||
GpStatus WINGDIPAPI GdipGetSolidFillColor(GpSolidFill*,ARGB*);
|
||||
|
||||
/* StringFormat functions */
|
||||
GpStatus WINGDIPAPI GdipCreateStringFormat(INT,LANGID,GpStringFormat**);
|
||||
GpStatus WINGDIPAPI GdipStringFormatGetGenericDefault(GpStringFormat**);
|
||||
GpStatus WINGDIPAPI GdipStringFormatGetGenericTypographic(GpStringFormat**);
|
||||
GpStatus WINGDIPAPI GdipDeleteStringFormat(GpStringFormat*);
|
||||
GpStatus WINGDIPAPI GdipCloneStringFormat(GDIPCONST GpStringFormat*,GpStringFormat**);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatFlags(GpStringFormat*,INT);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatFlags(GDIPCONST GpStringFormat*,INT*);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatAlign(GpStringFormat*,StringAlignment);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatAlign(GDIPCONST GpStringFormat*,StringAlignment*);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatLineAlign(GpStringFormat*,StringAlignment);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatLineAlign(GDIPCONST GpStringFormat*,StringAlignment*);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatTrimming(GpStringFormat*,StringTrimming);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatTrimming(GDIPCONST GpStringFormat*,StringTrimming*);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatHotkeyPrefix(GpStringFormat*,INT);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatHotkeyPrefix(GDIPCONST GpStringFormat*,INT*);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatTabStops(GpStringFormat*,REAL,INT,GDIPCONST REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatTabStops(GDIPCONST GpStringFormat*,INT,REAL*,REAL*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatTabStopCount(GDIPCONST GpStringFormat*,INT*);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatDigitSubstitution(GpStringFormat*,LANGID,StringDigitSubstitute);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatDigitSubstitution(GDIPCONST GpStringFormat*,LANGID*,StringDigitSubstitute*);
|
||||
GpStatus WINGDIPAPI GdipGetStringFormatMeasurableCharacterRangeCount(GDIPCONST GpStringFormat*,INT*);
|
||||
GpStatus WINGDIPAPI GdipSetStringFormatMeasurableCharacterRanges(GpStringFormat*,INT,GDIPCONST CharacterRange*);
|
||||
|
||||
/* Text functions */
|
||||
GpStatus WINGDIPAPI GdipDrawString(GpGraphics*,GDIPCONST WCHAR*,INT,GDIPCONST GpFont*,GDIPCONST RectF*,GDIPCONST GpStringFormat*,GDIPCONST GpBrush*);
|
||||
GpStatus WINGDIPAPI GdipMeasureString(GpGraphics*,GDIPCONST WCHAR*,INT,GDIPCONST GpFont*,GDIPCONST RectF*,GDIPCONST GpStringFormat*,RectF*,INT*,INT*);
|
||||
#ifdef __cplusplus
|
||||
GpStatus WINGDIPAPI GdipMeasureCharacterRanges(GpGraphics*,GDIPCONST WCHAR*,INT,GDIPCONST GpFont*,GDIPCONST RectF&,GDIPCONST GpStringFormat*,INT,GpRegion**);
|
||||
#endif
|
||||
GpStatus WINGDIPAPI GdipDrawDriverString(GpGraphics*,GDIPCONST UINT16*,INT,GDIPCONST GpFont*,GDIPCONST GpBrush*,GDIPCONST PointF*,INT,GDIPCONST GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipMeasureDriverString(GpGraphics*,GDIPCONST UINT16*,INT,GDIPCONST GpFont*,GDIPCONST PointF*,INT,GDIPCONST GpMatrix*,RectF*);
|
||||
|
||||
/* TextureBrush functions */
|
||||
GpStatus WINGDIPAPI GdipCreateTexture(GpImage*,GpWrapMode,GpTexture**);
|
||||
GpStatus WINGDIPAPI GdipCreateTexture2(GpImage*,GpWrapMode,REAL,REAL,REAL,REAL,GpTexture**);
|
||||
GpStatus WINGDIPAPI GdipCreateTexture2I(GpImage*,GpWrapMode,INT,INT,INT,INT,GpTexture**);
|
||||
GpStatus WINGDIPAPI GdipCreateTextureIA(GpImage*,GDIPCONST GpImageAttributes*,REAL,REAL,REAL,REAL,GpTexture**);
|
||||
GpStatus WINGDIPAPI GdipCreateTextureIAI(GpImage*,GDIPCONST GpImageAttributes*,INT,INT,INT,INT,GpTexture**);
|
||||
GpStatus WINGDIPAPI GdipGetTextureTransform(GpTexture*,GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipSetTextureTransform(GpTexture*,GDIPCONST GpMatrix*);
|
||||
GpStatus WINGDIPAPI GdipResetTextureTransform(GpTexture*);
|
||||
GpStatus WINGDIPAPI GdipMultiplyTextureTransform(GpTexture*,GDIPCONST GpMatrix*,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipTranslateTextureTransform(GpTexture*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipScaleTextureTransform(GpTexture*,REAL,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipRotateTextureTransform(GpTexture*,REAL,GpMatrixOrder);
|
||||
GpStatus WINGDIPAPI GdipSetTextureWrapMode(GpTexture*,GpWrapMode);
|
||||
GpStatus WINGDIPAPI GdipGetTextureWrapMode(GpTexture*,GpWrapMode*);
|
||||
GpStatus WINGDIPAPI GdipGetTextureImage(GpTexture*,GpImage**);
|
||||
|
||||
/* uncategorized functions */
|
||||
GpStatus WINGDIPAPI GdipTestControl(GpTestControlEnum,void*);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
} /* namespace DllExports */
|
||||
#endif
|
||||
|
||||
#endif /* __GDIPLUS_FLAT_H */
|
|
@ -0,0 +1,139 @@
|
|||
/*
|
||||
* gdiplusgpstubs.h
|
||||
*
|
||||
* GDI+ Gp* type declarations
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_GPSTUBS_H
|
||||
#define __GDIPLUS_GPSTUBS_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
typedef Point GpPoint;
|
||||
typedef PointF GpPointF;
|
||||
typedef Rect GpRect;
|
||||
typedef RectF GpRectF;
|
||||
typedef Size GpSize;
|
||||
typedef SizeF GpSizeF;
|
||||
|
||||
typedef enum BrushType GpBrushType;
|
||||
typedef enum CombineMode GpCombineMode;
|
||||
typedef enum CompositingMode GpCompositingMode;
|
||||
typedef enum CompositingQuality GpCompositingQuality;
|
||||
typedef enum CoordinateSpace GpCoordinateSpace;
|
||||
typedef enum CustomLineCapType GpCustomLineCapType;
|
||||
typedef enum DashCap GpDashCap;
|
||||
typedef enum DashStyle GpDashStyle;
|
||||
typedef enum DitherType GpDitherType;
|
||||
typedef enum DriverStringOptions GpDriverStringOptions;
|
||||
typedef enum EmfPlusRecordType GpEmfPlusRecordType;
|
||||
typedef enum EmfToWmfBitsFlags GpEmfToWmfBitsFlags;
|
||||
typedef enum EmfType GpEmfType;
|
||||
typedef enum EncoderParameterValueType GpEncoderParameterValueType;
|
||||
typedef enum EncoderValue GpEncoderValue;
|
||||
typedef enum FillMode GpFillMode;
|
||||
typedef enum FlushIntention GpFlushIntention;
|
||||
typedef enum FontStyle GpFontStyle;
|
||||
typedef enum HatchStyle GpHatchStyle;
|
||||
typedef enum HotkeyPrefix GpHotkeyPrefix;
|
||||
typedef enum ImageType GpImageType;
|
||||
typedef enum InterpolationMode GpInterpolationMode;
|
||||
typedef enum LinearGradientMode GpLinearGradientMode;
|
||||
typedef enum LineCap GpLineCap;
|
||||
typedef enum LineJoin GpLineJoin;
|
||||
typedef enum MatrixOrder GpMatrixOrder;
|
||||
typedef enum MetafileFrameUnit GpMetafileFrameUnit;
|
||||
typedef enum MetafileType GpMetafileType;
|
||||
typedef enum ObjectType GpObjectType;
|
||||
typedef enum PathPointType GpPathPointType;
|
||||
typedef enum PenAlignment GpPenAlignment;
|
||||
typedef enum PenType GpPenType;
|
||||
typedef enum PixelOffsetMode GpPixelOffsetMode;
|
||||
typedef enum QualityMode GpQualityMode;
|
||||
typedef enum SmoothingMode GpSmoothingMode;
|
||||
typedef enum StringAlignment GpStringAlignment;
|
||||
typedef enum StringDigitSubstitute GpStringDigitSubstitute;
|
||||
typedef enum StringFormatFlags GpStringFormatFlags;
|
||||
typedef enum StringTrimming GpStringTrimming;
|
||||
typedef enum TextRenderingHint GpTextRenderingHint;
|
||||
typedef enum Unit GpUnit;
|
||||
typedef enum WarpMode GpWarpMode;
|
||||
typedef enum WrapMode GpWrapMode;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
class CGpEffect {};
|
||||
class GpCustomLineCap {};
|
||||
class GpImage {};
|
||||
|
||||
class GpAdjustableArrowCap: public GpCustomLineCap {};
|
||||
class GpBitmap: public GpImage {};
|
||||
class GpBrush {};
|
||||
class GpCachedBitmap {};
|
||||
class GpFont {};
|
||||
class GpFontCollection {};
|
||||
class GpFontFamily {};
|
||||
class GpGraphics {};
|
||||
class GpHatch: public GpBrush {}; /* HatchBrush */
|
||||
class GpImageAttributes {};
|
||||
class GpLineGradient: public GpBrush {}; /* LinearGradientBrush */
|
||||
class GpMatrix {};
|
||||
class GpMetafile: public GpImage {};
|
||||
class GpPath {}; /* GraphicsPath */
|
||||
class GpPathData {};
|
||||
class GpPathGradient: public GpBrush {}; /* PathGradientBrush */
|
||||
class GpPathIterator {}; /* GraphicsPathIterator */
|
||||
class GpPen {};
|
||||
class GpRegion {};
|
||||
class GpSolidFill: public GpBrush {}; /* SolidBrush */
|
||||
class GpStringFormat {};
|
||||
class GpTexture: public GpBrush {}; /* TextureBrush */
|
||||
|
||||
#else /* !__cplusplus */
|
||||
|
||||
typedef void CGpEffect;
|
||||
typedef void GpAdjustableArrowCap;
|
||||
typedef void GpBitmap;
|
||||
typedef void GpBrush;
|
||||
typedef void GpCachedBitmap;
|
||||
typedef void GpCustomLineCap;
|
||||
typedef void GpFont;
|
||||
typedef void GpFontFamily;
|
||||
typedef void GpFontCollection;
|
||||
typedef void GpGraphics;
|
||||
typedef void GpHatch;
|
||||
typedef void GpImage;
|
||||
typedef void GpImageAttributes;
|
||||
typedef void GpLineGradient;
|
||||
typedef void GpMatrix;
|
||||
typedef void GpMetafile;
|
||||
typedef void GpPath;
|
||||
typedef void GpPathData;
|
||||
typedef void GpPathGradient;
|
||||
typedef void GpPathIterator;
|
||||
typedef void GpPen;
|
||||
typedef void GpRegion;
|
||||
typedef void GpSolidFill;
|
||||
typedef void GpStringFormat;
|
||||
typedef void GpTexture;
|
||||
|
||||
#endif /* !__cplusplus */
|
||||
|
||||
#endif /* __GDIPLUS_GPSTUBS_H */
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,581 @@
|
|||
/*
|
||||
* gdiplusheaders.h
|
||||
*
|
||||
* GDI+ Bitmap, CachedBitmap, CustomLineCap, Font, FontCollection,
|
||||
* FontFamily, Image, InstalledFontCollection, PrivateFontCollection,
|
||||
* Region class definitions.
|
||||
* Implementation of these classes is in gdiplusimpl.h.
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_HEADERS_H
|
||||
#define __GDIPLUS_HEADERS_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error "A C++ compiler is required to include gdiplusheaders.h."
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Note: Virtual inline functions (dtors, Clone()) are implemented here: If
|
||||
* these were defined outside class scope, the compiler would always generate
|
||||
* code for them (and the vtable), even if these classes were never used.
|
||||
*/
|
||||
|
||||
class Bitmap;
|
||||
class Effect;
|
||||
class FontCollection;
|
||||
class FontFamily;
|
||||
class Graphics;
|
||||
class GraphicsPath;
|
||||
class Matrix;
|
||||
class Pen;
|
||||
|
||||
class Image: public GdiplusBase
|
||||
{
|
||||
friend class Bitmap;
|
||||
friend class Metafile;
|
||||
friend class CachedBitmap;
|
||||
friend class Graphics;
|
||||
friend class TextureBrush;
|
||||
|
||||
public:
|
||||
static Image* FromFile(const WCHAR *filename,
|
||||
BOOL useEmbeddedColorManagement = FALSE);
|
||||
static Image* FromStream(IStream *stream,
|
||||
BOOL useEmbeddedColorManagement = FALSE);
|
||||
|
||||
Image(const WCHAR *filename, BOOL useEmbeddedColorManagement = FALSE);
|
||||
Image(IStream *stream, BOOL useEmbeddedColorManagement = FALSE);
|
||||
|
||||
virtual ~Image()
|
||||
{
|
||||
DllExports::GdipDisposeImage(nativeImage);
|
||||
}
|
||||
virtual Image* Clone() const
|
||||
{
|
||||
GpImage *cloneImage = NULL;
|
||||
Status status = updateStatus(DllExports::GdipCloneImage(
|
||||
nativeImage, &cloneImage));
|
||||
if (status == Ok) {
|
||||
Image *result = new Image(cloneImage, lastStatus);
|
||||
if (!result) {
|
||||
DllExports::GdipDisposeImage(cloneImage);
|
||||
lastStatus = OutOfMemory;
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
Status FindFirstItem(ImageItemData *item);
|
||||
Status FindNextItem(ImageItemData *item);
|
||||
Status GetAllPropertyItems(UINT totalBufferSize,
|
||||
UINT numProperties, PropertyItem *allItems);
|
||||
Status GetBounds(RectF *srcRect, Unit *srcUnit);
|
||||
Status GetEncoderParameterList(const CLSID *clsidEncoder,
|
||||
UINT size, EncoderParameters *buffer);
|
||||
UINT GetEncoderParameterListSize(const CLSID *clsidEncoder);
|
||||
UINT GetFlags();
|
||||
UINT GetFrameCount(const GUID *dimensionID);
|
||||
UINT GetFrameDimensionsCount();
|
||||
Status GetFrameDimensionsList(GUID *dimensionIDs, UINT count);
|
||||
UINT GetHeight();
|
||||
REAL GetHorizontalResolution();
|
||||
Status GetItemData(ImageItemData *item);
|
||||
Status GetPalette(ColorPalette *palette, INT size);
|
||||
INT GetPaletteSize();
|
||||
Status GetPhysicalDimension(SizeF *size);
|
||||
PixelFormat GetPixelFormat();
|
||||
UINT GetPropertyCount();
|
||||
Status GetPropertyIdList(UINT numOfProperty, PROPID *list);
|
||||
Status GetPropertyItem(PROPID propId, UINT propSize,
|
||||
PropertyItem *buffer);
|
||||
UINT GetPropertyItemSize(PROPID propId);
|
||||
Status GetPropertySize(UINT *totalBufferSize, UINT *numProperties);
|
||||
Status GetRawFormat(GUID *format);
|
||||
Image* GetThumbnailImage(UINT thumbWidth, UINT thumbHeight,
|
||||
GetThumbnailImageAbort callback, VOID *callbackData);
|
||||
ImageType GetType() const;
|
||||
REAL GetVerticalResolution();
|
||||
UINT GetWidth();
|
||||
Status RemovePropertyItem(PROPID propId);
|
||||
Status RotateFlip(RotateFlipType rotateFlipType);
|
||||
Status Save(IStream *stream, const CLSID *clsidEncoder,
|
||||
const EncoderParameters *encoderParams);
|
||||
Status Save(const WCHAR *filename, const CLSID *clsidEncoder,
|
||||
const EncoderParameters *encoderParams);
|
||||
Status SaveAdd(const EncoderParameters *encoderParams);
|
||||
Status SaveAdd(Image *newImage, const EncoderParameters *encoderParams);
|
||||
Status SelectActiveFrame(const GUID *dimensionID, UINT frameIndex);
|
||||
Status SetAbort(GdiplusAbort *pIAbort);
|
||||
Status SetPalette(const ColorPalette *palette);
|
||||
Status SetPropertyItem(const PropertyItem *item);
|
||||
|
||||
Status GetLastStatus() const
|
||||
{
|
||||
Status result = lastStatus;
|
||||
lastStatus = Ok;
|
||||
return result;
|
||||
}
|
||||
|
||||
private:
|
||||
Image(GpImage *image, Status status):
|
||||
nativeImage(image), lastStatus(status) {}
|
||||
Image(const Image&);
|
||||
Image& operator=(const Image&);
|
||||
|
||||
Status updateStatus(Status newStatus) const
|
||||
{
|
||||
if (newStatus != Ok) lastStatus = newStatus;
|
||||
return newStatus;
|
||||
}
|
||||
|
||||
GpImage *nativeImage;
|
||||
mutable Status lastStatus;
|
||||
};
|
||||
|
||||
class Bitmap: public Image
|
||||
{
|
||||
public:
|
||||
static Bitmap* FromBITMAPINFO(const BITMAPINFO *gdiBitmapInfo,
|
||||
VOID *gdiBitmapData);
|
||||
static Bitmap* FromDirectDrawSurface7(IDirectDrawSurface7 *surface);
|
||||
static Bitmap* FromFile(const WCHAR *filename,
|
||||
BOOL useEmbeddedColorManagement = FALSE);
|
||||
static Bitmap* FromHBITMAP(HBITMAP hbm, HPALETTE hpal);
|
||||
static Bitmap* FromHICON(HICON icon);
|
||||
static Bitmap* FromResource(HINSTANCE hInstance,
|
||||
const WCHAR *bitmapName);
|
||||
static Bitmap* FromStream(IStream *stream,
|
||||
BOOL useEmbeddedColorManagement = FALSE);
|
||||
static Status ApplyEffect(Bitmap **inputs, INT numInputs,
|
||||
Effect *effect, RECT *ROI,
|
||||
RECT *outputRect, Bitmap **output);
|
||||
static Status InitializePalette(ColorPalette *palette,
|
||||
PaletteType paletteType, INT optimalColors,
|
||||
BOOL useTransparentColor, Bitmap *bitmap);
|
||||
|
||||
Bitmap(const BITMAPINFO *gdiBitmapInfo, VOID *gdiBitmapData);
|
||||
Bitmap(IDirectDrawSurface7 *surface);
|
||||
Bitmap(const WCHAR *filename, BOOL useEmbeddedColorManagement = FALSE);
|
||||
Bitmap(HBITMAP hbm, HPALETTE hpal);
|
||||
Bitmap(HICON hicon);
|
||||
Bitmap(HINSTANCE hInstance, const WCHAR *bitmapName);
|
||||
Bitmap(IStream *stream, BOOL useEmbeddedColorManagement = FALSE);
|
||||
Bitmap(INT width, INT height, Graphics *target);
|
||||
Bitmap(INT width, INT height, PixelFormat format = PixelFormat32bppARGB);
|
||||
Bitmap(INT width, INT height, INT stride, PixelFormat format, BYTE *scan0);
|
||||
|
||||
virtual ~Bitmap()
|
||||
{
|
||||
}
|
||||
virtual Bitmap* Clone() const
|
||||
{
|
||||
GpImage *cloneImage = NULL;
|
||||
Status status = updateStatus(DllExports::GdipCloneImage(
|
||||
nativeImage, &cloneImage));
|
||||
if (status == Ok) {
|
||||
Bitmap *result = new Bitmap(cloneImage, lastStatus);
|
||||
if (!result) {
|
||||
DllExports::GdipDisposeImage(cloneImage);
|
||||
lastStatus = OutOfMemory;
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
Bitmap* Clone(const RectF& rect, PixelFormat format) const;
|
||||
Bitmap* Clone(const Rect& rect, PixelFormat format) const;
|
||||
Bitmap* Clone(REAL x, REAL y, REAL width, REAL height,
|
||||
PixelFormat format) const;
|
||||
Bitmap* Clone(INT x, INT y, INT width, INT height,
|
||||
PixelFormat format) const;
|
||||
|
||||
Status ApplyEffect(Effect *effect, RECT *ROI);
|
||||
Status ConvertFormat(PixelFormat format, DitherType ditherType,
|
||||
PaletteType paletteType, ColorPalette *palette,
|
||||
REAL alphaThresholdPercent);
|
||||
Status GetHBITMAP(const Color& colorBackground, HBITMAP *hbmReturn) const;
|
||||
Status GetHICON(HICON *icon) const;
|
||||
Status GetHistogram(HistogramFormat format, UINT numberOfEntries,
|
||||
UINT *channel0, UINT *channel1,
|
||||
UINT *channel2, UINT *channel3) const;
|
||||
Status GetHistogramSize(HistogramFormat format,
|
||||
UINT *numberOfEntries) const;
|
||||
Status GetPixel(INT x, INT y, Color *color) const;
|
||||
Status LockBits(const Rect *rect, UINT flags, PixelFormat format,
|
||||
BitmapData *lockedBitmapData);
|
||||
Status SetPixel(INT x, INT y, const Color& color);
|
||||
Status SetResolution(REAL xdpi, REAL ydpi);
|
||||
Status UnlockBits(BitmapData *lcokedBitmapData);
|
||||
|
||||
private:
|
||||
Bitmap(GpImage *image, Status status): Image(image, status) {}
|
||||
Bitmap(const Bitmap&);
|
||||
Bitmap& operator=(const Bitmap&);
|
||||
};
|
||||
|
||||
class CachedBitmap: public GdiplusBase
|
||||
{
|
||||
friend class Graphics;
|
||||
|
||||
public:
|
||||
CachedBitmap(Bitmap *bitmap, Graphics *graphics);
|
||||
~CachedBitmap();
|
||||
|
||||
Status GetLastStatus() const
|
||||
{
|
||||
return lastStatus;
|
||||
}
|
||||
|
||||
private:
|
||||
CachedBitmap(const CachedBitmap&);
|
||||
CachedBitmap& operator=(const CachedBitmap&);
|
||||
|
||||
GpCachedBitmap *nativeCachedBitmap;
|
||||
Status lastStatus;
|
||||
};
|
||||
|
||||
class CustomLineCap: public GdiplusBase
|
||||
{
|
||||
friend class AdjustableArrowCap;
|
||||
friend class Pen;
|
||||
|
||||
public:
|
||||
CustomLineCap(const GraphicsPath *fillPath,
|
||||
const GraphicsPath *strokePath,
|
||||
LineCap baseCap = LineCapFlat,
|
||||
REAL baseInset = 0.0f);
|
||||
|
||||
virtual ~CustomLineCap()
|
||||
{
|
||||
DllExports::GdipDeleteCustomLineCap(nativeCustomLineCap);
|
||||
}
|
||||
virtual CustomLineCap* Clone() const
|
||||
{
|
||||
GpCustomLineCap *cloneCustomLineCap = NULL;
|
||||
Status status = updateStatus(DllExports::GdipCloneCustomLineCap(
|
||||
nativeCustomLineCap, &cloneCustomLineCap));
|
||||
if (status == Ok) {
|
||||
CustomLineCap *result = new CustomLineCap(
|
||||
cloneCustomLineCap, lastStatus);
|
||||
if (!result) {
|
||||
DllExports::GdipDeleteCustomLineCap(cloneCustomLineCap);
|
||||
lastStatus = OutOfMemory;
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
LineCap GetBaseCap() const;
|
||||
REAL GetBaseInset() const;
|
||||
Status GetStrokeCaps(LineCap *startCap, LineCap *endCap) const;
|
||||
LineJoin GetStrokeJoin() const;
|
||||
REAL GetWidthScale() const;
|
||||
Status SetBaseCap(LineCap baseCap);
|
||||
Status SetBaseInset(REAL inset);
|
||||
Status SetStrokeCap(LineCap strokeCap);
|
||||
Status SetStrokeCaps(LineCap startCap, LineCap endCap);
|
||||
Status SetStrokeJoin(LineJoin lineJoin);
|
||||
Status SetWidthScale(REAL widthScale);
|
||||
|
||||
Status GetLastStatus() const
|
||||
{
|
||||
Status result = lastStatus;
|
||||
lastStatus = Ok;
|
||||
return result;
|
||||
}
|
||||
|
||||
private:
|
||||
CustomLineCap(GpCustomLineCap *customLineCap, Status status):
|
||||
nativeCustomLineCap(customLineCap), lastStatus(status) {}
|
||||
CustomLineCap(const CustomLineCap&);
|
||||
CustomLineCap& operator=(const CustomLineCap&);
|
||||
|
||||
Status updateStatus(Status newStatus) const
|
||||
{
|
||||
if (newStatus != Ok) lastStatus = newStatus;
|
||||
return newStatus;
|
||||
}
|
||||
|
||||
GpCustomLineCap *nativeCustomLineCap;
|
||||
mutable Status lastStatus;
|
||||
};
|
||||
|
||||
class Font: public GdiplusBase
|
||||
{
|
||||
friend class Graphics;
|
||||
|
||||
public:
|
||||
Font(const FontFamily *family, REAL emSize,
|
||||
INT style = FontStyleRegular,
|
||||
Unit unit = UnitPoint);
|
||||
Font(HDC hdc, HFONT hfont);
|
||||
Font(HDC hdc, const LOGFONTA *logfont);
|
||||
Font(HDC hdc, const LOGFONTW *logfont);
|
||||
Font(HDC hdc);
|
||||
Font(const WCHAR *familyName, REAL emSize,
|
||||
INT style = FontStyleRegular,
|
||||
Unit unit = UnitPoint,
|
||||
const FontCollection *fontCollection = NULL);
|
||||
~Font();
|
||||
Font* Clone() const;
|
||||
|
||||
Status GetFamily(FontFamily *family) const;
|
||||
REAL GetHeight(const Graphics *graphics) const;
|
||||
REAL GetHeight(REAL dpi) const;
|
||||
Status GetLogFontA(const Graphics *graphics, LOGFONTA *logfontA) const;
|
||||
Status GetLogFontW(const Graphics *graphics, LOGFONTW *logfontW) const;
|
||||
REAL GetSize() const;
|
||||
INT GetStyle() const;
|
||||
Unit GetUnit() const;
|
||||
|
||||
Status GetLastStatus() const
|
||||
{
|
||||
return lastStatus;
|
||||
}
|
||||
BOOL IsAvailable() const
|
||||
{
|
||||
return nativeFont != NULL;
|
||||
}
|
||||
|
||||
private:
|
||||
Font(GpFont *font, Status status):
|
||||
nativeFont(font), lastStatus(status) {}
|
||||
Font(const Font&);
|
||||
Font& operator=(const Font&);
|
||||
|
||||
Status updateStatus(Status newStatus) const
|
||||
{
|
||||
if (newStatus != Ok) lastStatus = newStatus;
|
||||
return newStatus;
|
||||
}
|
||||
|
||||
GpFont *nativeFont;
|
||||
mutable Status lastStatus;
|
||||
};
|
||||
|
||||
class FontCollection: public GdiplusBase
|
||||
{
|
||||
friend class InstalledFontCollection;
|
||||
friend class PrivateFontCollection;
|
||||
friend class Font;
|
||||
friend class FontFamily;
|
||||
|
||||
public:
|
||||
FontCollection();
|
||||
virtual ~FontCollection() {}
|
||||
|
||||
Status GetFamilies(INT numSought, FontFamily *families,
|
||||
INT *numFound) const;
|
||||
INT GetFamilyCount() const;
|
||||
|
||||
Status GetLastStatus() const
|
||||
{
|
||||
return lastStatus;
|
||||
}
|
||||
|
||||
private:
|
||||
FontCollection(const FontCollection&);
|
||||
FontCollection& operator=(const FontCollection&);
|
||||
|
||||
Status updateStatus(Status newStatus) const
|
||||
{
|
||||
return lastStatus = newStatus;
|
||||
}
|
||||
|
||||
GpFontCollection *nativeFontCollection;
|
||||
mutable Status lastStatus;
|
||||
};
|
||||
|
||||
class FontFamily: public GdiplusBase
|
||||
{
|
||||
friend class Font;
|
||||
friend class FontCollection;
|
||||
friend class GraphicsPath;
|
||||
|
||||
public:
|
||||
static const FontFamily* GenericMonospace();
|
||||
static const FontFamily* GenericSansSerif();
|
||||
static const FontFamily* GenericSerif();
|
||||
|
||||
FontFamily();
|
||||
FontFamily(const WCHAR *name,
|
||||
const FontCollection *fontCollection = NULL);
|
||||
~FontFamily();
|
||||
FontFamily* Clone() const;
|
||||
|
||||
UINT16 GetCellAscent(INT style) const;
|
||||
UINT16 GetCellDescent(INT style) const;
|
||||
UINT16 GetEmHeight(INT style) const;
|
||||
Status GetFamilyName(WCHAR name[LF_FACESIZE],
|
||||
LANGID language = LANG_NEUTRAL) const;
|
||||
UINT16 GetLineSpacing(INT style) const;
|
||||
BOOL IsStyleAvailable(INT style) const;
|
||||
|
||||
Status GetLastStatus() const
|
||||
{
|
||||
Status result = lastStatus;
|
||||
lastStatus = Ok;
|
||||
return result;
|
||||
}
|
||||
BOOL IsAvailable() const
|
||||
{
|
||||
return nativeFontFamily != NULL;
|
||||
}
|
||||
|
||||
private:
|
||||
FontFamily(GpFontFamily *fontFamily, Status status):
|
||||
nativeFontFamily(fontFamily), lastStatus(status) {}
|
||||
FontFamily(const FontFamily&);
|
||||
FontFamily& operator=(const FontFamily&);
|
||||
|
||||
Status updateStatus(Status newStatus) const
|
||||
{
|
||||
if (newStatus != Ok) lastStatus = newStatus;
|
||||
return newStatus;
|
||||
}
|
||||
|
||||
GpFontFamily *nativeFontFamily;
|
||||
mutable Status lastStatus;
|
||||
};
|
||||
|
||||
class InstalledFontCollection: public FontCollection
|
||||
{
|
||||
public:
|
||||
InstalledFontCollection();
|
||||
virtual ~InstalledFontCollection() {}
|
||||
};
|
||||
|
||||
class PrivateFontCollection: public FontCollection
|
||||
{
|
||||
public:
|
||||
PrivateFontCollection();
|
||||
|
||||
virtual ~PrivateFontCollection()
|
||||
{
|
||||
DllExports::GdipDeletePrivateFontCollection(&nativeFontCollection);
|
||||
}
|
||||
|
||||
Status AddFontFile(const WCHAR *filename);
|
||||
Status AddMemoryFont(const VOID *memory, INT length);
|
||||
};
|
||||
|
||||
class Region: public GdiplusBase
|
||||
{
|
||||
friend class Graphics;
|
||||
|
||||
public:
|
||||
static Region* FromHRGN(HRGN hrgn);
|
||||
|
||||
Region();
|
||||
Region(const RectF& rect);
|
||||
Region(const Rect& rect);
|
||||
Region(const GraphicsPath *path);
|
||||
Region(const BYTE *regionData, INT size);
|
||||
Region(HRGN hrgn);
|
||||
~Region();
|
||||
Region* Clone() const;
|
||||
|
||||
Status Complement(const RectF& rect);
|
||||
Status Complement(const Rect& rect);
|
||||
Status Complement(const Region *region);
|
||||
Status Complement(const GraphicsPath *path);
|
||||
BOOL Equals(const Region *region, const Graphics *graphics) const;
|
||||
Status Exclude(const RectF& rect);
|
||||
Status Exclude(const Rect& rect);
|
||||
Status Exclude(const Region *region);
|
||||
Status Exclude(const GraphicsPath *path);
|
||||
Status GetBounds(RectF *rect, const Graphics *graphics) const;
|
||||
Status GetBounds(Rect *rect, const Graphics *graphics) const;
|
||||
Status GetData(BYTE *buffer, UINT bufferSize, UINT *sizeFilled) const;
|
||||
UINT GetDataSize() const;
|
||||
HRGN GetHRGN(const Graphics *graphics) const;
|
||||
Status GetRegionScans(const Matrix *matrix,
|
||||
RectF *rects, INT *count) const;
|
||||
Status GetRegionScans(const Matrix *matrix,
|
||||
Rect *rects, INT *count) const;
|
||||
UINT GetRegionScansCount(const Matrix *matrix) const;
|
||||
Status Intersect(const RectF& rect);
|
||||
Status Intersect(const Rect& rect);
|
||||
Status Intersect(const Region *region);
|
||||
Status Intersect(const GraphicsPath *path);
|
||||
BOOL IsEmpty(const Graphics *graphics) const;
|
||||
BOOL IsInfinite(const Graphics *graphics) const;
|
||||
BOOL IsVisible(REAL x, REAL y,
|
||||
const Graphics *graphics = NULL) const;
|
||||
BOOL IsVisible(INT x, INT y,
|
||||
const Graphics *graphics = NULL) const;
|
||||
BOOL IsVisible(const PointF& point,
|
||||
const Graphics *graphics = NULL) const;
|
||||
BOOL IsVisible(const Point& point,
|
||||
const Graphics *graphics = NULL) const;
|
||||
BOOL IsVisible(REAL x, REAL y, REAL width, REAL height,
|
||||
const Graphics *graphics = NULL) const;
|
||||
BOOL IsVisible(INT x, INT y, INT width, INT height,
|
||||
const Graphics *graphics = NULL) const;
|
||||
BOOL IsVisible(const RectF& rect,
|
||||
const Graphics *graphics = NULL) const;
|
||||
BOOL IsVisible(const Rect& rect,
|
||||
const Graphics *graphics = NULL) const;
|
||||
Status MakeEmpty();
|
||||
Status MakeInfinite();
|
||||
Status Transform(const Matrix *matrix);
|
||||
Status Translate(REAL dx, REAL dy);
|
||||
Status Translate(INT dx, INT dy);
|
||||
Status Union(const RectF& rect);
|
||||
Status Union(const Rect& rect);
|
||||
Status Union(const Region *region);
|
||||
Status Union(const GraphicsPath *path);
|
||||
Status Xor(const RectF& rect);
|
||||
Status Xor(const Rect& rect);
|
||||
Status Xor(const Region *region);
|
||||
Status Xor(const GraphicsPath *path);
|
||||
|
||||
Status GetLastStatus() const
|
||||
{
|
||||
Status result = lastStatus;
|
||||
lastStatus = Ok;
|
||||
return result;
|
||||
}
|
||||
|
||||
private:
|
||||
Region(GpRegion *region, Status status):
|
||||
nativeRegion(region), lastStatus(status) {}
|
||||
Region(const Region&);
|
||||
Region& operator=(const Region&);
|
||||
|
||||
Status updateStatus(Status newStatus) const
|
||||
{
|
||||
if (newStatus != Ok) lastStatus = newStatus;
|
||||
return newStatus;
|
||||
}
|
||||
|
||||
GpRegion *nativeRegion;
|
||||
mutable Status lastStatus;
|
||||
};
|
||||
|
||||
#endif /* __GDIPLUS_HEADERS_H */
|
|
@ -0,0 +1,236 @@
|
|||
/*
|
||||
* gdiplusimageattributes.h
|
||||
*
|
||||
* GDI+ ImageAttributes class
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_IMAGEATTRIBUTES_H
|
||||
#define __GDIPLUS_IMAGEATTRIBUTES_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error "A C++ compiler is required to include gdiplusimageattributes.h."
|
||||
#endif
|
||||
|
||||
class ImageAttributes: public GdiplusBase
|
||||
{
|
||||
friend class Graphics;
|
||||
friend class TextureBrush;
|
||||
|
||||
public:
|
||||
ImageAttributes(): nativeImageAttributes(NULL), lastStatus(Ok)
|
||||
{
|
||||
lastStatus = DllExports::GdipCreateImageAttributes(
|
||||
&nativeImageAttributes);
|
||||
}
|
||||
~ImageAttributes()
|
||||
{
|
||||
DllExports::GdipDisposeImageAttributes(nativeImageAttributes);
|
||||
}
|
||||
ImageAttributes* Clone() const
|
||||
{
|
||||
GpImageAttributes *cloneImageAttributes = NULL;
|
||||
Status status = updateStatus(DllExports::GdipCloneImageAttributes(
|
||||
nativeImageAttributes, &cloneImageAttributes));
|
||||
if (status == Ok) {
|
||||
ImageAttributes *result = new ImageAttributes(
|
||||
cloneImageAttributes, lastStatus);
|
||||
if (!result) {
|
||||
DllExports::GdipDisposeImageAttributes(cloneImageAttributes);
|
||||
lastStatus = OutOfMemory;
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
Status ClearBrushRemapTable()
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesRemapTable(
|
||||
nativeImageAttributes, ColorAdjustTypeBrush,
|
||||
FALSE, 0, NULL));
|
||||
}
|
||||
Status ClearColorKey(ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesColorKeys(
|
||||
nativeImageAttributes, type, FALSE, 0, 0));
|
||||
}
|
||||
Status ClearColorMatrices(ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesColorMatrix(
|
||||
nativeImageAttributes, type, FALSE,
|
||||
NULL, NULL, ColorMatrixFlagsDefault));
|
||||
}
|
||||
Status ClearColorMatrix(ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesColorMatrix(
|
||||
nativeImageAttributes, type, FALSE,
|
||||
NULL, NULL, ColorMatrixFlagsDefault));
|
||||
}
|
||||
Status ClearGamma(ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesGamma(
|
||||
nativeImageAttributes, type, FALSE, 1.0f));
|
||||
}
|
||||
Status ClearNoOp(ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesNoOp(
|
||||
nativeImageAttributes, type, FALSE));
|
||||
}
|
||||
Status ClearOutputChannel(ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesOutputChannel(
|
||||
nativeImageAttributes, type, FALSE,
|
||||
ColorChannelFlagsC));
|
||||
}
|
||||
Status ClearOutputChannelColorProfile(
|
||||
ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesOutputChannelColorProfile(
|
||||
nativeImageAttributes, type, FALSE, NULL));
|
||||
}
|
||||
Status ClearRemapTable(ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesRemapTable(
|
||||
nativeImageAttributes, type, FALSE, 0, NULL));
|
||||
}
|
||||
Status ClearThreshold(ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesThreshold(
|
||||
nativeImageAttributes, type, FALSE, 0.0));
|
||||
}
|
||||
Status GetAdjustedPalette(ColorPalette *colorPalette,
|
||||
ColorAdjustType type) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetImageAttributesAdjustedPalette(
|
||||
nativeImageAttributes, colorPalette, type));
|
||||
}
|
||||
Status GetLastStatus() const
|
||||
{
|
||||
Status result = lastStatus;
|
||||
lastStatus = Ok;
|
||||
return result;
|
||||
}
|
||||
Status Reset(ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipResetImageAttributes(
|
||||
nativeImageAttributes, type));
|
||||
}
|
||||
Status SetBrushRemapTable(UINT mapSize, ColorMap *map)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesRemapTable(
|
||||
nativeImageAttributes, ColorAdjustTypeBrush,
|
||||
TRUE, mapSize, map));
|
||||
}
|
||||
Status SetColorKey(const Color& colorLow, const Color& colorHigh,
|
||||
ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesColorKeys(
|
||||
nativeImageAttributes, type, TRUE,
|
||||
colorLow.GetValue(), colorHigh.GetValue()));
|
||||
}
|
||||
Status SetColorMatrices(const ColorMatrix *colorMatrix,
|
||||
const ColorMatrix *grayMatrix,
|
||||
ColorMatrixFlags mode = ColorMatrixFlagsDefault,
|
||||
ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesColorMatrix(
|
||||
nativeImageAttributes, type, TRUE,
|
||||
colorMatrix, grayMatrix, mode));
|
||||
}
|
||||
Status SetColorMatrix(const ColorMatrix *colorMatrix,
|
||||
ColorMatrixFlags mode = ColorMatrixFlagsDefault,
|
||||
ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesColorMatrix(
|
||||
nativeImageAttributes, type, TRUE,
|
||||
colorMatrix, NULL, mode));
|
||||
}
|
||||
Status SetGamma(REAL gamma,
|
||||
ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesGamma(
|
||||
nativeImageAttributes, type, TRUE, gamma));
|
||||
}
|
||||
Status SetNoOp(ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesNoOp(
|
||||
nativeImageAttributes, type, TRUE));
|
||||
}
|
||||
Status SetOutputChannel(ColorChannelFlags channelFlags,
|
||||
ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesOutputChannel(
|
||||
nativeImageAttributes, type, TRUE,
|
||||
channelFlags));
|
||||
}
|
||||
Status SetOutputChannelColorProfile(const WCHAR *colorProfileFilename,
|
||||
ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesOutputChannelColorProfile(
|
||||
nativeImageAttributes, type, TRUE,
|
||||
colorProfileFilename));
|
||||
}
|
||||
Status SetRemapTable(UINT mapSize, const ColorMap *map,
|
||||
ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesRemapTable(
|
||||
nativeImageAttributes, type, TRUE,
|
||||
mapSize, map));
|
||||
}
|
||||
Status SetThreshold(REAL threshold,
|
||||
ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesThreshold(
|
||||
nativeImageAttributes, type, TRUE, threshold));
|
||||
}
|
||||
Status SetToIdentity(ColorAdjustType type = ColorAdjustTypeDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesToIdentity(
|
||||
nativeImageAttributes, type));
|
||||
}
|
||||
Status SetWrapMode(WrapMode wrap, const Color& color = Color(),
|
||||
BOOL clamp = FALSE)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetImageAttributesWrapMode(
|
||||
nativeImageAttributes, wrap,
|
||||
color.GetValue(), clamp));
|
||||
}
|
||||
|
||||
private:
|
||||
ImageAttributes(GpImageAttributes *imageAttributes, Status status):
|
||||
nativeImageAttributes(imageAttributes), lastStatus(status) {}
|
||||
ImageAttributes(const ImageAttributes&);
|
||||
ImageAttributes& operator=(const ImageAttributes&);
|
||||
|
||||
Status updateStatus(Status newStatus) const
|
||||
{
|
||||
if (newStatus != Ok) lastStatus = newStatus;
|
||||
return newStatus;
|
||||
}
|
||||
|
||||
GpImageAttributes *nativeImageAttributes;
|
||||
mutable Status lastStatus;
|
||||
};
|
||||
|
||||
|
||||
#endif /* __GDIPLUS_IMAGEATTRIBUTES_H */
|
|
@ -0,0 +1,67 @@
|
|||
/*
|
||||
* gdiplusimagecodec.h
|
||||
*
|
||||
* GDI+ image decoders and encoders
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_IMAGECODEC_H
|
||||
#define __GDIPLUS_IMAGECODEC_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
static __inline__ GpStatus GetImageDecoders(UINT numDecoders, UINT size,
|
||||
ImageCodecInfo *decoders)
|
||||
{
|
||||
#ifdef __cplusplus
|
||||
return DllExports::GdipGetImageDecoders(numDecoders, size, decoders);
|
||||
#else
|
||||
return GdipGetImageDecoders(numDecoders, size, decoders);
|
||||
#endif
|
||||
}
|
||||
|
||||
static __inline__ GpStatus GetImageDecodersSize(UINT *numDecoders, UINT *size)
|
||||
{
|
||||
#ifdef __cplusplus
|
||||
return DllExports::GdipGetImageDecodersSize(numDecoders, size);
|
||||
#else
|
||||
return GdipGetImageDecodersSize(numDecoders, size);
|
||||
#endif
|
||||
}
|
||||
|
||||
static __inline__ GpStatus GetImageEncoders(UINT numEncoders, UINT size,
|
||||
ImageCodecInfo *encoders)
|
||||
{
|
||||
#ifdef __cplusplus
|
||||
return DllExports::GdipGetImageEncoders(numEncoders, size, encoders);
|
||||
#else
|
||||
return GdipGetImageEncoders(numEncoders, size, encoders);
|
||||
#endif
|
||||
}
|
||||
|
||||
static __inline__ GpStatus GetImageEncodersSize(UINT *numEncoders, UINT *size)
|
||||
{
|
||||
#ifdef __cplusplus
|
||||
return DllExports::GdipGetImageEncodersSize(numEncoders, size);
|
||||
#else
|
||||
return GdipGetImageEncodersSize(numEncoders, size);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* __GDIPLUS_IMAGECODEC_H */
|
|
@ -0,0 +1,411 @@
|
|||
/*
|
||||
* gdiplusimaging.h
|
||||
*
|
||||
* GDI+ Imaging and image metadata
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_IMAGING_H
|
||||
#define __GDIPLUS_IMAGING_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
typedef enum ImageCodecFlags {
|
||||
ImageCodecFlagsEncoder = 0x00000001,
|
||||
ImageCodecFlagsDecoder = 0x00000002,
|
||||
ImageCodecFlagsSupportBitmap = 0x00000004,
|
||||
ImageCodecFlagsSupportVector = 0x00000008,
|
||||
ImageCodecFlagsSeekableEncode = 0x00000010,
|
||||
ImageCodecFlagsBlockingDecode = 0x00000020,
|
||||
ImageCodecFlagsBuiltin = 0x00010000,
|
||||
ImageCodecFlagsSystem = 0x00020000,
|
||||
ImageCodecFlagsUser = 0x00040000
|
||||
} ImageCodecFlags;
|
||||
|
||||
typedef enum ImageFlags {
|
||||
ImageFlagsNone = 0,
|
||||
ImageFlagsScalable = 0x00000001,
|
||||
ImageFlagsHasAlpha = 0x00000002,
|
||||
ImageFlagsHasTranslucent = 0x00000004,
|
||||
ImageFlagsPartiallyScalable = 0x00000008,
|
||||
ImageFlagsColorSpaceRGB = 0x00000010,
|
||||
ImageFlagsColorSpaceCMYK = 0x00000020,
|
||||
ImageFlagsColorSpaceGRAY = 0x00000040,
|
||||
ImageFlagsColorSpaceYCBCR = 0x00000080,
|
||||
ImageFlagsColorSpaceYCCK = 0x00000100,
|
||||
ImageFlagsHasRealDPI = 0x00001000,
|
||||
ImageFlagsHasRealPixelSize = 0x00002000,
|
||||
ImageFlagsReadOnly = 0x00010000,
|
||||
ImageFlagsCaching = 0x00020000
|
||||
} ImageFlags;
|
||||
|
||||
typedef enum ImageLockMode {
|
||||
ImageLockModeRead = 1,
|
||||
ImageLockModeWrite = 2,
|
||||
ImageLockModeUserInputBuf = 4
|
||||
} ImageLockMode;
|
||||
|
||||
typedef enum ItemDataPosition {
|
||||
ItemDataPositionAfterHeader = 0,
|
||||
ItemDataPositionAfterPalette = 1,
|
||||
ItemDataPositionAfterBits = 2
|
||||
} ItemDataPosition;
|
||||
|
||||
typedef enum RotateFlipType {
|
||||
RotateNoneFlipNone = 0,
|
||||
Rotate90FlipNone = 1,
|
||||
Rotate180FlipNone = 2,
|
||||
Rotate270FlipNone = 3,
|
||||
RotateNoneFlipX = 4,
|
||||
Rotate90FlipX = 5,
|
||||
Rotate180FlipX = 6,
|
||||
Rotate270FlipX = 7,
|
||||
Rotate180FlipXY = 0,
|
||||
Rotate270FlipXY = 1,
|
||||
RotateNoneFlipXY = 2,
|
||||
Rotate90FlipXY = 3,
|
||||
Rotate180FlipY = 4,
|
||||
Rotate270FlipY = 5,
|
||||
RotateNoneFlipY = 6,
|
||||
Rotate90FlipY = 7
|
||||
} RotateFlipType;
|
||||
|
||||
typedef struct BitmapData {
|
||||
UINT Width;
|
||||
UINT Height;
|
||||
INT Stride;
|
||||
INT PixelFormat; /* MSDN: "PixelFormat PixelFormat;" */
|
||||
VOID *Scan0;
|
||||
UINT_PTR Reserved;
|
||||
} BitmapData;
|
||||
|
||||
typedef struct EncoderParameter {
|
||||
GUID Guid;
|
||||
ULONG NumberOfValues;
|
||||
ULONG Type;
|
||||
VOID *Value;
|
||||
} EncoderParameter;
|
||||
|
||||
typedef struct EncoderParameters {
|
||||
UINT Count;
|
||||
EncoderParameter Parameter[1];
|
||||
} EncoderParameters;
|
||||
|
||||
typedef struct ImageCodecInfo {
|
||||
CLSID Clsid;
|
||||
GUID FormatID;
|
||||
WCHAR *CodecName;
|
||||
WCHAR *DllName;
|
||||
WCHAR *FormatDescription;
|
||||
WCHAR *FilenameExtension;
|
||||
WCHAR *MimeType;
|
||||
DWORD Flags;
|
||||
DWORD Version;
|
||||
DWORD SigCount;
|
||||
DWORD SigSize;
|
||||
BYTE *SigPattern;
|
||||
BYTE *SigMask;
|
||||
} ImageCodecInfo;
|
||||
|
||||
/* FIXME: The order of fields is probably wrong. Please don't use this
|
||||
* structure until this problem is resolved! Can't test because
|
||||
* ImageItemData is not supported by the redistributable GDI+ 1.0 DLL. */
|
||||
typedef struct ImageItemData {
|
||||
UINT Size;
|
||||
UINT Position;
|
||||
VOID *Desc;
|
||||
UINT DescSize;
|
||||
UINT *Data;
|
||||
UINT DataSize;
|
||||
UINT Cookie;
|
||||
} ImageItemData;
|
||||
|
||||
typedef struct PropertyItem {
|
||||
PROPID id;
|
||||
ULONG length;
|
||||
WORD type;
|
||||
VOID *value;
|
||||
} PropertyItem;
|
||||
|
||||
#define PropertyTagGpsVer ((PROPID) 0x0000)
|
||||
#define PropertyTagGpsLatitudeRef ((PROPID) 0x0001)
|
||||
#define PropertyTagGpsLatitude ((PROPID) 0x0002)
|
||||
#define PropertyTagGpsLongitudeRef ((PROPID) 0x0003)
|
||||
#define PropertyTagGpsLongitude ((PROPID) 0x0004)
|
||||
#define PropertyTagGpsAltitudeRef ((PROPID) 0x0005)
|
||||
#define PropertyTagGpsAltitude ((PROPID) 0x0006)
|
||||
#define PropertyTagGpsGpsTime ((PROPID) 0x0007)
|
||||
#define PropertyTagGpsGpsSatellites ((PROPID) 0x0008)
|
||||
#define PropertyTagGpsGpsStatus ((PROPID) 0x0009)
|
||||
#define PropertyTagGpsGpsMeasureMode ((PROPID) 0x000A)
|
||||
#define PropertyTagGpsGpsDop ((PROPID) 0x000B)
|
||||
#define PropertyTagGpsSpeedRef ((PROPID) 0x000C)
|
||||
#define PropertyTagGpsSpeed ((PROPID) 0x000D)
|
||||
#define PropertyTagGpsTrackRef ((PROPID) 0x000E)
|
||||
#define PropertyTagGpsTrack ((PROPID) 0x000F)
|
||||
#define PropertyTagGpsImgDirRef ((PROPID) 0x0010)
|
||||
#define PropertyTagGpsImgDir ((PROPID) 0x0011)
|
||||
#define PropertyTagGpsMapDatum ((PROPID) 0x0012)
|
||||
#define PropertyTagGpsDestLatRef ((PROPID) 0x0013)
|
||||
#define PropertyTagGpsDestLat ((PROPID) 0x0014)
|
||||
#define PropertyTagGpsDestLongRef ((PROPID) 0x0015)
|
||||
#define PropertyTagGpsDestLong ((PROPID) 0x0016)
|
||||
#define PropertyTagGpsDestBearRef ((PROPID) 0x0017)
|
||||
#define PropertyTagGpsDestBear ((PROPID) 0x0018)
|
||||
#define PropertyTagGpsDestDistRef ((PROPID) 0x0019)
|
||||
#define PropertyTagGpsDestDist ((PROPID) 0x001A)
|
||||
#define PropertyTagNewSubfileType ((PROPID) 0x00FE)
|
||||
#define PropertyTagSubfileType ((PROPID) 0x00FF)
|
||||
#define PropertyTagImageWidth ((PROPID) 0x0100)
|
||||
#define PropertyTagImageHeight ((PROPID) 0x0101)
|
||||
#define PropertyTagBitsPerSample ((PROPID) 0x0102)
|
||||
#define PropertyTagCompression ((PROPID) 0x0103)
|
||||
#define PropertyTagPhotometricInterp ((PROPID) 0x0106)
|
||||
#define PropertyTagThreshHolding ((PROPID) 0x0107)
|
||||
#define PropertyTagCellWidth ((PROPID) 0x0108)
|
||||
#define PropertyTagCellHeight ((PROPID) 0x0109)
|
||||
#define PropertyTagFillOrder ((PROPID) 0x010A)
|
||||
#define PropertyTagDocumentName ((PROPID) 0x010D)
|
||||
#define PropertyTagImageDescription ((PROPID) 0x010E)
|
||||
#define PropertyTagEquipMake ((PROPID) 0x010F)
|
||||
#define PropertyTagEquipModel ((PROPID) 0x0110)
|
||||
#define PropertyTagStripOffsets ((PROPID) 0x0111)
|
||||
#define PropertyTagOrientation ((PROPID) 0x0112)
|
||||
#define PropertyTagSamplesPerPixel ((PROPID) 0x0115)
|
||||
#define PropertyTagRowsPerStrip ((PROPID) 0x0116)
|
||||
#define PropertyTagStripBytesCount ((PROPID) 0x0117)
|
||||
#define PropertyTagMinSampleValue ((PROPID) 0x0118)
|
||||
#define PropertyTagMaxSampleValue ((PROPID) 0x0119)
|
||||
#define PropertyTagXResolution ((PROPID) 0x011A)
|
||||
#define PropertyTagYResolution ((PROPID) 0x011B)
|
||||
#define PropertyTagPlanarConfig ((PROPID) 0x011C)
|
||||
#define PropertyTagPageName ((PROPID) 0x011D)
|
||||
#define PropertyTagXPosition ((PROPID) 0x011E)
|
||||
#define PropertyTagYPosition ((PROPID) 0x011F)
|
||||
#define PropertyTagFreeOffset ((PROPID) 0x0120)
|
||||
#define PropertyTagFreeByteCounts ((PROPID) 0x0121)
|
||||
#define PropertyTagGrayResponseUnit ((PROPID) 0x0122)
|
||||
#define PropertyTagGrayResponseCurve ((PROPID) 0x0123)
|
||||
#define PropertyTagT4Option ((PROPID) 0x0124)
|
||||
#define PropertyTagT6Option ((PROPID) 0x0125)
|
||||
#define PropertyTagResolutionUnit ((PROPID) 0x0128)
|
||||
#define PropertyTagPageNumber ((PROPID) 0x0129)
|
||||
#define PropertyTagTransferFunction ((PROPID) 0x012D)
|
||||
#define PropertyTagSoftwareUsed ((PROPID) 0x0131)
|
||||
#define PropertyTagDateTime ((PROPID) 0x0132)
|
||||
#define PropertyTagArtist ((PROPID) 0x013B)
|
||||
#define PropertyTagHostComputer ((PROPID) 0x013C)
|
||||
#define PropertyTagPredictor ((PROPID) 0x013D)
|
||||
#define PropertyTagWhitePoint ((PROPID) 0x013E)
|
||||
#define PropertyTagPrimaryChromaticities ((PROPID) 0x013F)
|
||||
#define PropertyTagColorMap ((PROPID) 0x0140)
|
||||
#define PropertyTagHalftoneHints ((PROPID) 0x0141)
|
||||
#define PropertyTagTileWidth ((PROPID) 0x0142)
|
||||
#define PropertyTagTileLength ((PROPID) 0x0143)
|
||||
#define PropertyTagTileOffset ((PROPID) 0x0144)
|
||||
#define PropertyTagTileByteCounts ((PROPID) 0x0145)
|
||||
#define PropertyTagInkSet ((PROPID) 0x014C)
|
||||
#define PropertyTagInkNames ((PROPID) 0x014D)
|
||||
#define PropertyTagNumberOfInks ((PROPID) 0x014E)
|
||||
#define PropertyTagDotRange ((PROPID) 0x0150)
|
||||
#define PropertyTagTargetPrinter ((PROPID) 0x0151)
|
||||
#define PropertyTagExtraSamples ((PROPID) 0x0152)
|
||||
#define PropertyTagSampleFormat ((PROPID) 0x0153)
|
||||
#define PropertyTagSMinSampleValue ((PROPID) 0x0154)
|
||||
#define PropertyTagSMaxSampleValue ((PROPID) 0x0155)
|
||||
#define PropertyTagTransferRange ((PROPID) 0x0156)
|
||||
#define PropertyTagJPEGProc ((PROPID) 0x0200)
|
||||
#define PropertyTagJPEGInterFormat ((PROPID) 0x0201)
|
||||
#define PropertyTagJPEGInterLength ((PROPID) 0x0202)
|
||||
#define PropertyTagJPEGRestartInterval ((PROPID) 0x0203)
|
||||
#define PropertyTagJPEGLosslessPredictors ((PROPID) 0x0205)
|
||||
#define PropertyTagJPEGPointTransforms ((PROPID) 0x0206)
|
||||
#define PropertyTagJPEGQTables ((PROPID) 0x0207)
|
||||
#define PropertyTagJPEGDCTables ((PROPID) 0x0208)
|
||||
#define PropertyTagJPEGACTables ((PROPID) 0x0209)
|
||||
#define PropertyTagYCbCrCoefficients ((PROPID) 0x0211)
|
||||
#define PropertyTagYCbCrSubsampling ((PROPID) 0x0212)
|
||||
#define PropertyTagYCbCrPositioning ((PROPID) 0x0213)
|
||||
#define PropertyTagREFBlackWhite ((PROPID) 0x0214)
|
||||
#define PropertyTagGamma ((PROPID) 0x0301)
|
||||
#define PropertyTagICCProfileDescriptor ((PROPID) 0x0302)
|
||||
#define PropertyTagSRGBRenderingIntent ((PROPID) 0x0303)
|
||||
#define PropertyTagImageTitle ((PROPID) 0x0320)
|
||||
#define PropertyTagResolutionXUnit ((PROPID) 0x5001)
|
||||
#define PropertyTagResolutionYUnit ((PROPID) 0x5002)
|
||||
#define PropertyTagResolutionXLengthUnit ((PROPID) 0x5003)
|
||||
#define PropertyTagResolutionYLengthUnit ((PROPID) 0x5004)
|
||||
#define PropertyTagPrintFlags ((PROPID) 0x5005)
|
||||
#define PropertyTagPrintFlagsVersion ((PROPID) 0x5006)
|
||||
#define PropertyTagPrintFlagsCrop ((PROPID) 0x5007)
|
||||
#define PropertyTagPrintFlagsBleedWidth ((PROPID) 0x5008)
|
||||
#define PropertyTagPrintFlagsBleedWidthScale ((PROPID) 0x5009)
|
||||
#define PropertyTagHalftoneLPI ((PROPID) 0x500A)
|
||||
#define PropertyTagHalftoneLPIUnit ((PROPID) 0x500B)
|
||||
#define PropertyTagHalftoneDegree ((PROPID) 0x500C)
|
||||
#define PropertyTagHalftoneShape ((PROPID) 0x500D)
|
||||
#define PropertyTagHalftoneMisc ((PROPID) 0x500E)
|
||||
#define PropertyTagHalftoneScreen ((PROPID) 0x500F)
|
||||
#define PropertyTagJPEGQuality ((PROPID) 0x5010)
|
||||
#define PropertyTagGridSize ((PROPID) 0x5011)
|
||||
#define PropertyTagThumbnailFormat ((PROPID) 0x5012)
|
||||
#define PropertyTagThumbnailWidth ((PROPID) 0x5013)
|
||||
#define PropertyTagThumbnailHeight ((PROPID) 0x5014)
|
||||
#define PropertyTagThumbnailColorDepth ((PROPID) 0x5015)
|
||||
#define PropertyTagThumbnailPlanes ((PROPID) 0x5016)
|
||||
#define PropertyTagThumbnailRawBytes ((PROPID) 0x5017)
|
||||
#define PropertyTagThumbnailSize ((PROPID) 0x5018)
|
||||
#define PropertyTagThumbnailCompressedSize ((PROPID) 0x5019)
|
||||
#define PropertyTagColorTransferFunction ((PROPID) 0x501A)
|
||||
#define PropertyTagThumbnailData ((PROPID) 0x501B)
|
||||
#define PropertyTagThumbnailImageWidth ((PROPID) 0x5020)
|
||||
#define PropertyTagThumbnailImageHeight ((PROPID) 0x5021)
|
||||
#define PropertyTagThumbnailBitsPerSample ((PROPID) 0x5022)
|
||||
#define PropertyTagThumbnailCompression ((PROPID) 0x5023)
|
||||
#define PropertyTagThumbnailPhotometricInterp ((PROPID) 0x5024)
|
||||
#define PropertyTagThumbnailImageDescription ((PROPID) 0x5025)
|
||||
#define PropertyTagThumbnailEquipMake ((PROPID) 0x5026)
|
||||
#define PropertyTagThumbnailEquipModel ((PROPID) 0x5027)
|
||||
#define PropertyTagThumbnailStripOffsets ((PROPID) 0x5028)
|
||||
#define PropertyTagThumbnailOrientation ((PROPID) 0x5029)
|
||||
#define PropertyTagThumbnailSamplesPerPixel ((PROPID) 0x502A)
|
||||
#define PropertyTagThumbnailRowsPerStrip ((PROPID) 0x502B)
|
||||
#define PropertyTagThumbnailStripBytesCount ((PROPID) 0x502C)
|
||||
#define PropertyTagThumbnailResolutionX ((PROPID) 0x502D)
|
||||
#define PropertyTagThumbnailResolutionY ((PROPID) 0x502E)
|
||||
#define PropertyTagThumbnailPlanarConfig ((PROPID) 0x502F)
|
||||
#define PropertyTagThumbnailResolutionUnit ((PROPID) 0x5030)
|
||||
#define PropertyTagThumbnailTransferFunction ((PROPID) 0x5031)
|
||||
#define PropertyTagThumbnailSoftwareUsed ((PROPID) 0x5032)
|
||||
#define PropertyTagThumbnailDateTime ((PROPID) 0x5033)
|
||||
#define PropertyTagThumbnailArtist ((PROPID) 0x5034)
|
||||
#define PropertyTagThumbnailWhitePoint ((PROPID) 0x5035)
|
||||
#define PropertyTagThumbnailPrimaryChromaticities ((PROPID) 0x5036)
|
||||
#define PropertyTagThumbnailYCbCrCoefficients ((PROPID) 0x5037)
|
||||
#define PropertyTagThumbnailYCbCrSubsampling ((PROPID) 0x5038)
|
||||
#define PropertyTagThumbnailYCbCrPositioning ((PROPID) 0x5039)
|
||||
#define PropertyTagThumbnailRefBlackWhite ((PROPID) 0x503A)
|
||||
#define PropertyTagThumbnailCopyRight ((PROPID) 0x503B)
|
||||
#define PropertyTagLuminanceTable ((PROPID) 0x5090)
|
||||
#define PropertyTagChrominanceTable ((PROPID) 0x5091)
|
||||
#define PropertyTagFrameDelay ((PROPID) 0x5100)
|
||||
#define PropertyTagLoopCount ((PROPID) 0x5101)
|
||||
#define PropertyTagGlobalPalette ((PROPID) 0x5102)
|
||||
#define PropertyTagIndexBackground ((PROPID) 0x5103)
|
||||
#define PropertyTagIndexTransparent ((PROPID) 0x5104)
|
||||
#define PropertyTagPixelUnit ((PROPID) 0x5110)
|
||||
#define PropertyTagPixelPerUnitX ((PROPID) 0x5111)
|
||||
#define PropertyTagPixelPerUnitY ((PROPID) 0x5112)
|
||||
#define PropertyTagPaletteHistogram ((PROPID) 0x5113)
|
||||
#define PropertyTagCopyright ((PROPID) 0x8298)
|
||||
#define PropertyTagExifExposureTime ((PROPID) 0x829A)
|
||||
#define PropertyTagExifFNumber ((PROPID) 0x829D)
|
||||
#define PropertyTagExifIFD ((PROPID) 0x8769)
|
||||
#define PropertyTagICCProfile ((PROPID) 0x8773)
|
||||
#define PropertyTagExifExposureProg ((PROPID) 0x8822)
|
||||
#define PropertyTagExifSpectralSense ((PROPID) 0x8824)
|
||||
#define PropertyTagGpsIFD ((PROPID) 0x8825)
|
||||
#define PropertyTagExifISOSpeed ((PROPID) 0x8827)
|
||||
#define PropertyTagExifOECF ((PROPID) 0x8828)
|
||||
#define PropertyTagExifVer ((PROPID) 0x9000)
|
||||
#define PropertyTagExifDTOrig ((PROPID) 0x9003)
|
||||
#define PropertyTagExifDTDigitized ((PROPID) 0x9004)
|
||||
#define PropertyTagExifCompConfig ((PROPID) 0x9101)
|
||||
#define PropertyTagExifCompBPP ((PROPID) 0x9102)
|
||||
#define PropertyTagExifShutterSpeed ((PROPID) 0x9201)
|
||||
#define PropertyTagExifAperture ((PROPID) 0x9202)
|
||||
#define PropertyTagExifBrightness ((PROPID) 0x9203)
|
||||
#define PropertyTagExifExposureBias ((PROPID) 0x9204)
|
||||
#define PropertyTagExifMaxAperture ((PROPID) 0x9205)
|
||||
#define PropertyTagExifSubjectDist ((PROPID) 0x9206)
|
||||
#define PropertyTagExifMeteringMode ((PROPID) 0x9207)
|
||||
#define PropertyTagExifLightSource ((PROPID) 0x9208)
|
||||
#define PropertyTagExifFlash ((PROPID) 0x9209)
|
||||
#define PropertyTagExifFocalLength ((PROPID) 0x920A)
|
||||
#define PropertyTagExifMakerNote ((PROPID) 0x927C)
|
||||
#define PropertyTagExifUserComment ((PROPID) 0x9286)
|
||||
#define PropertyTagExifDTSubsec ((PROPID) 0x9290)
|
||||
#define PropertyTagExifDTOrigSS ((PROPID) 0x9291)
|
||||
#define PropertyTagExifDTDigSS ((PROPID) 0x9292)
|
||||
#define PropertyTagExifFPXVer ((PROPID) 0xA000)
|
||||
#define PropertyTagExifColorSpace ((PROPID) 0xA001)
|
||||
#define PropertyTagExifPixXDim ((PROPID) 0xA002)
|
||||
#define PropertyTagExifPixYDim ((PROPID) 0xA003)
|
||||
#define PropertyTagExifRelatedWav ((PROPID) 0xA004)
|
||||
#define PropertyTagExifInterop ((PROPID) 0xA005)
|
||||
#define PropertyTagExifFlashEnergy ((PROPID) 0xA20B)
|
||||
#define PropertyTagExifSpatialFR ((PROPID) 0xA20C)
|
||||
#define PropertyTagExifFocalXRes ((PROPID) 0xA20E)
|
||||
#define PropertyTagExifFocalYRes ((PROPID) 0xA20F)
|
||||
#define PropertyTagExifFocalResUnit ((PROPID) 0xA210)
|
||||
#define PropertyTagExifSubjectLoc ((PROPID) 0xA214)
|
||||
#define PropertyTagExifExposureIndex ((PROPID) 0xA215)
|
||||
#define PropertyTagExifSensingMethod ((PROPID) 0xA217)
|
||||
#define PropertyTagExifFileSource ((PROPID) 0xA300)
|
||||
#define PropertyTagExifSceneType ((PROPID) 0xA301)
|
||||
#define PropertyTagExifCfaPattern ((PROPID) 0xA302)
|
||||
|
||||
#define PropertyTagTypeByte ((WORD) 1)
|
||||
#define PropertyTagTypeASCII ((WORD) 2)
|
||||
#define PropertyTagTypeShort ((WORD) 3)
|
||||
#define PropertyTagTypeLong ((WORD) 4)
|
||||
#define PropertyTagTypeRational ((WORD) 5)
|
||||
#define PropertyTagTypeUndefined ((WORD) 7)
|
||||
#define PropertyTagTypeSLONG ((WORD) 9)
|
||||
#define PropertyTagTypeSRational ((WORD) 10)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern const GUID EncoderChrominanceTable; /* f2e455dc-09b3-4316-8260-676ada32481c */
|
||||
extern const GUID EncoderColorDepth; /* 66087055-ad66-4c7c-9a18-38a2310b8337 */
|
||||
extern const GUID EncoderColorSpace; /* ? */
|
||||
extern const GUID EncoderCompression; /* e09d739d-ccd4-44ee-8eba-3fbf8be4fc58 */
|
||||
extern const GUID EncoderImageItems; /* ? */
|
||||
extern const GUID EncoderLuminanceTable; /* edb33bce-0266-4a77-b904-27216099e717 */
|
||||
extern const GUID EncoderQuality; /* 1d5be4b5-fa4a-452d-9cdd-5db35105e7eb */
|
||||
extern const GUID EncoderRenderMethod; /* 6d42c53a-229a-4825-8bb7-5c99e2b9a8b8 */
|
||||
extern const GUID EncoderSaveAsCMYK; /* ? */
|
||||
extern const GUID EncoderSaveFlag; /* 292266fc-ac40-47bf-8cfc-a85b89a655de */
|
||||
extern const GUID EncoderScanMethod; /* 3a4e2661-3109-4e56-8536-42c156e7dcfa */
|
||||
extern const GUID EncoderTransformation; /* 8d0eb2d1-a58e-4ea8-aa14-108074b7b6f9 */
|
||||
extern const GUID EncoderVersion; /* 24d18c76-814a-41a4-bf53-1c219cccf797 */
|
||||
|
||||
extern const GUID ImageFormatBMP; /* b96b3cab-0728-11d3-9d7b-0000f81ef32e */
|
||||
extern const GUID ImageFormatEMF; /* b96b3cac-0728-11d3-9d7b-0000f81ef32e */
|
||||
extern const GUID ImageFormatEXIF; /* ? */
|
||||
extern const GUID ImageFormatGIF; /* b96b3cb0-0728-11d3-9d7b-0000f81ef32e */
|
||||
extern const GUID ImageFormatIcon; /* b96b3cb5-0728-11d3-9d7b-0000f81ef32e */
|
||||
extern const GUID ImageFormatJPEG; /* b96b3cae-0728-11d3-9d7b-0000f81ef32e */
|
||||
extern const GUID ImageFormatMemoryBMP; /* b96b3caa-0728-11d3-9d7b-0000f81ef32e */
|
||||
extern const GUID ImageFormatPNG; /* b96b3caf-0728-11d3-9d7b-0000f81ef32e */
|
||||
extern const GUID ImageFormatTIFF; /* b96b3cb1-0728-11d3-9d7b-0000f81ef32e */
|
||||
extern const GUID ImageFormatUndefined; /* ? */
|
||||
extern const GUID ImageFormatWMF; /* b96b3cad-0728-11d3-9d7b-0000f81ef32e */
|
||||
|
||||
extern const GUID FrameDimensionPage; /* 7462dc86-6180-4c7e-8e3f-ee7333a7a483 */
|
||||
extern const GUID FrameDimensionResolution; /* ? */
|
||||
extern const GUID FrameDimensionTime; /* 6aedbd6d-3fb5-418a-83a6-7f45229dc872 */
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /* __GDIPLUS_IMAGING_H */
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* gdiplusinit.h
|
||||
*
|
||||
* GDI+ Initialization
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_INIT_H
|
||||
#define __GDIPLUS_INIT_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
typedef struct GdiplusStartupInput {
|
||||
UINT32 GdiplusVersion;
|
||||
DebugEventProc DebugEventCallback;
|
||||
BOOL SuppressBackgroundThread;
|
||||
BOOL SuppressExternalCodecs;
|
||||
|
||||
#ifdef __cplusplus
|
||||
GdiplusStartupInput(DebugEventProc debugEventCallback = NULL,
|
||||
BOOL suppressBackgroundThread = FALSE,
|
||||
BOOL suppressExternalCodecs = FALSE):
|
||||
GdiplusVersion(1),
|
||||
DebugEventCallback(debugEventCallback),
|
||||
SuppressBackgroundThread(suppressBackgroundThread),
|
||||
SuppressExternalCodecs(suppressExternalCodecs) {}
|
||||
#endif /* __cplusplus */
|
||||
} GdiplusStartupInput;
|
||||
|
||||
typedef GpStatus WINGDIPAPI (*NotificationHookProc)(ULONG_PTR *token);
|
||||
typedef VOID WINGDIPAPI (*NotificationUnhookProc)(ULONG_PTR token);
|
||||
|
||||
typedef struct GdiplusStartupOutput {
|
||||
NotificationHookProc NotificationHook;
|
||||
NotificationUnhookProc NotificationUnhook;
|
||||
|
||||
#ifdef __cplusplus
|
||||
GdiplusStartupOutput():
|
||||
NotificationHook(NULL),
|
||||
NotificationUnhook(NULL) {}
|
||||
#endif /* __cplusplus */
|
||||
} GdiplusStartupOutput;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
GpStatus WINGDIPAPI GdiplusStartup(ULONG_PTR*,GDIPCONST GdiplusStartupInput*,GdiplusStartupOutput*);
|
||||
VOID WINGDIPAPI GdiplusShutdown(ULONG_PTR);
|
||||
GpStatus WINGDIPAPI GdiplusNotificationHook(ULONG_PTR*);
|
||||
VOID WINGDIPAPI GdiplusNotificationUnhook(ULONG_PTR);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* __GDIPLUS_INIT_H */
|
|
@ -0,0 +1,131 @@
|
|||
/*
|
||||
* gdipluslinecaps.h
|
||||
*
|
||||
* GDI+ AdjustableArrowCap class
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_LINECAPS_H
|
||||
#define __GDIPLUS_LINECAPS_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error "A C++ compiler is required to include gdipluslinecaps.h."
|
||||
#endif
|
||||
|
||||
class AdjustableArrowCap: public CustomLineCap
|
||||
{
|
||||
public:
|
||||
AdjustableArrowCap(REAL height, REAL width, BOOL isFilled):
|
||||
CustomLineCap(NULL, Ok)
|
||||
{
|
||||
GpAdjustableArrowCap *nativeAdjustableArrowCap = NULL;
|
||||
lastStatus = DllExports::GdipCreateAdjustableArrowCap(
|
||||
height, width, isFilled,
|
||||
&nativeAdjustableArrowCap);
|
||||
nativeCustomLineCap = nativeAdjustableArrowCap;
|
||||
}
|
||||
virtual ~AdjustableArrowCap()
|
||||
{
|
||||
}
|
||||
virtual AdjustableArrowCap* Clone() const
|
||||
{
|
||||
GpCustomLineCap *cloneCustomLineCap = NULL;
|
||||
Status status = updateStatus(DllExports::GdipCloneCustomLineCap(
|
||||
nativeCustomLineCap, &cloneCustomLineCap));
|
||||
if (status == Ok) {
|
||||
AdjustableArrowCap *result = new AdjustableArrowCap(
|
||||
cloneCustomLineCap, lastStatus);
|
||||
if (!result) {
|
||||
DllExports::GdipDeleteCustomLineCap(
|
||||
cloneCustomLineCap);
|
||||
lastStatus = OutOfMemory;
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
REAL GetHeight() const
|
||||
{
|
||||
REAL result = 0.0f;
|
||||
updateStatus(DllExports::GdipGetAdjustableArrowCapHeight(
|
||||
(GpAdjustableArrowCap*) nativeCustomLineCap,
|
||||
&result));
|
||||
return result;
|
||||
}
|
||||
REAL GetMiddleInset() const
|
||||
{
|
||||
REAL result = 0.0f;
|
||||
updateStatus(DllExports::GdipGetAdjustableArrowCapMiddleInset(
|
||||
(GpAdjustableArrowCap*) nativeCustomLineCap,
|
||||
&result));
|
||||
return result;
|
||||
}
|
||||
REAL GetWidth() const
|
||||
{
|
||||
REAL result = 0.0f;
|
||||
updateStatus(DllExports::GdipGetAdjustableArrowCapWidth(
|
||||
(GpAdjustableArrowCap*) nativeCustomLineCap,
|
||||
&result));
|
||||
return result;
|
||||
}
|
||||
BOOL IsFilled() const
|
||||
{
|
||||
BOOL result = FALSE;
|
||||
updateStatus(DllExports::GdipGetAdjustableArrowCapFillState(
|
||||
(GpAdjustableArrowCap*) nativeCustomLineCap,
|
||||
&result));
|
||||
return result;
|
||||
}
|
||||
Status SetFillState(BOOL isFilled)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetAdjustableArrowCapFillState(
|
||||
(GpAdjustableArrowCap*) nativeCustomLineCap,
|
||||
isFilled));
|
||||
}
|
||||
Status SetHeight(REAL height)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetAdjustableArrowCapHeight(
|
||||
(GpAdjustableArrowCap*) nativeCustomLineCap,
|
||||
height));
|
||||
}
|
||||
Status SetMiddleInset(REAL middleInset)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetAdjustableArrowCapMiddleInset(
|
||||
(GpAdjustableArrowCap*) nativeCustomLineCap,
|
||||
middleInset));
|
||||
}
|
||||
Status SetWidth(REAL width)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetAdjustableArrowCapWidth(
|
||||
(GpAdjustableArrowCap*) nativeCustomLineCap,
|
||||
width));
|
||||
}
|
||||
|
||||
private:
|
||||
AdjustableArrowCap(GpCustomLineCap *customLineCap, Status status):
|
||||
CustomLineCap(customLineCap, status) {}
|
||||
AdjustableArrowCap(const AdjustableArrowCap&);
|
||||
AdjustableArrowCap& operator=(const AdjustableArrowCap&);
|
||||
};
|
||||
|
||||
#endif /* __GDIPLUS_LINECAPS_H */
|
|
@ -0,0 +1,240 @@
|
|||
/*
|
||||
* gdiplusmatrix.h
|
||||
*
|
||||
* GDI+ Matrix class
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_MATRIX_H
|
||||
#define __GDIPLUS_MATRIX_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error "A C++ compiler is required to include gdiplusmatrix.h."
|
||||
#endif
|
||||
|
||||
#define GDIP_MATRIX_PI \
|
||||
3.1415926535897932384626433832795028841971693993751058209749445923078164
|
||||
|
||||
class Matrix: public GdiplusBase
|
||||
{
|
||||
friend class Graphics;
|
||||
friend class GraphicsPath;
|
||||
friend class LinearGradientBrush;
|
||||
friend class PathGradientBrush;
|
||||
friend class Pen;
|
||||
friend class Region;
|
||||
friend class TextureBrush;
|
||||
|
||||
public:
|
||||
Matrix(): nativeMatrix(NULL), lastStatus(Ok)
|
||||
{
|
||||
lastStatus = DllExports::GdipCreateMatrix(&nativeMatrix);
|
||||
}
|
||||
Matrix(REAL m11, REAL m12, REAL m21, REAL m22, REAL dx, REAL dy):
|
||||
nativeMatrix(NULL), lastStatus(Ok)
|
||||
{
|
||||
lastStatus = DllExports::GdipCreateMatrix2(
|
||||
m11, m12, m21, m22, dx, dy,
|
||||
&nativeMatrix);
|
||||
}
|
||||
Matrix(const RectF& rect, const PointF *dstplg):
|
||||
nativeMatrix(NULL), lastStatus(Ok)
|
||||
{
|
||||
lastStatus = DllExports::GdipCreateMatrix3(
|
||||
&rect, dstplg, &nativeMatrix);
|
||||
}
|
||||
Matrix(const Rect& rect, const Point *dstplg):
|
||||
nativeMatrix(NULL), lastStatus(Ok)
|
||||
{
|
||||
lastStatus = DllExports::GdipCreateMatrix3I(
|
||||
&rect, dstplg, &nativeMatrix);
|
||||
}
|
||||
~Matrix()
|
||||
{
|
||||
DllExports::GdipDeleteMatrix(nativeMatrix);
|
||||
}
|
||||
Matrix* Clone() const
|
||||
{
|
||||
GpMatrix *cloneMatrix = NULL;
|
||||
Status status = updateStatus(DllExports::GdipCloneMatrix(
|
||||
nativeMatrix, &cloneMatrix));
|
||||
if (status == Ok) {
|
||||
Matrix *result = new Matrix(cloneMatrix, lastStatus);
|
||||
if (!result) {
|
||||
DllExports::GdipDeleteMatrix(cloneMatrix);
|
||||
lastStatus = OutOfMemory;
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
BOOL Equals(const Matrix *matrix) const
|
||||
{
|
||||
BOOL result;
|
||||
updateStatus(DllExports::GdipIsMatrixEqual(
|
||||
nativeMatrix,
|
||||
matrix ? matrix->nativeMatrix : NULL, &result));
|
||||
return result;
|
||||
}
|
||||
Status GetElements(REAL *m) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetMatrixElements(
|
||||
nativeMatrix, m));
|
||||
}
|
||||
Status GetLastStatus() const
|
||||
{
|
||||
Status result = lastStatus;
|
||||
lastStatus = Ok;
|
||||
return result;
|
||||
}
|
||||
Status Invert()
|
||||
{
|
||||
return updateStatus(DllExports::GdipInvertMatrix(nativeMatrix));
|
||||
}
|
||||
BOOL IsIdentity() const
|
||||
{
|
||||
BOOL result;
|
||||
updateStatus(DllExports::GdipIsMatrixIdentity(
|
||||
nativeMatrix, &result));
|
||||
return result;
|
||||
}
|
||||
BOOL IsInvertible() const
|
||||
{
|
||||
BOOL result;
|
||||
updateStatus(DllExports::GdipIsMatrixInvertible(
|
||||
nativeMatrix, &result));
|
||||
return result;
|
||||
}
|
||||
Status Multiply(const Matrix *matrix,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipMultiplyMatrix(
|
||||
nativeMatrix,
|
||||
matrix ? matrix->nativeMatrix : NULL, order));
|
||||
}
|
||||
REAL OffsetX() const
|
||||
{
|
||||
REAL m[6];
|
||||
updateStatus(DllExports::GdipGetMatrixElements(nativeMatrix, m));
|
||||
return m[4];
|
||||
}
|
||||
REAL OffsetY() const
|
||||
{
|
||||
REAL m[6];
|
||||
updateStatus(DllExports::GdipGetMatrixElements(nativeMatrix, m));
|
||||
return m[5];
|
||||
}
|
||||
Status Reset()
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetMatrixElements(
|
||||
nativeMatrix,
|
||||
1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f));
|
||||
}
|
||||
Status Rotate(REAL angle, MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipRotateMatrix(
|
||||
nativeMatrix, angle, order));
|
||||
}
|
||||
Status RotateAt(REAL angle, const PointF& center,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
REAL angleRadian = angle * GDIP_MATRIX_PI / 180.0f;
|
||||
REAL cosAngle = ::cos(angleRadian);
|
||||
REAL sinAngle = ::sin(angleRadian);
|
||||
REAL x = center.X;
|
||||
REAL y = center.Y;
|
||||
|
||||
Matrix matrix2(cosAngle, sinAngle, -sinAngle, cosAngle,
|
||||
x * (1.0f-cosAngle) + y * sinAngle,
|
||||
-x * sinAngle + y * (1.0f-cosAngle));
|
||||
Status status = matrix2.GetLastStatus();
|
||||
if (status == Ok) {
|
||||
return Multiply(&matrix2, order);
|
||||
} else {
|
||||
return lastStatus = status;
|
||||
}
|
||||
}
|
||||
Status Scale(REAL scaleX, REAL scaleY,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipScaleMatrix(
|
||||
nativeMatrix, scaleX, scaleY, order));
|
||||
}
|
||||
Status SetElements(REAL m11, REAL m12, REAL m21, REAL m22,
|
||||
REAL dx, REAL dy)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetMatrixElements(
|
||||
nativeMatrix, m11, m12, m21, m22, dx, dy));
|
||||
}
|
||||
Status Shear(REAL shearX, REAL shearY,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipShearMatrix(
|
||||
nativeMatrix, shearX, shearY, order));
|
||||
}
|
||||
Status TransformPoints(PointF *pts, INT count = 1) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipTransformMatrixPoints(
|
||||
nativeMatrix, pts, count));
|
||||
}
|
||||
Status TransformPoints(Point *pts, INT count = 1) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipTransformMatrixPointsI(
|
||||
nativeMatrix, pts, count));
|
||||
}
|
||||
Status TransformVectors(PointF *pts, INT count = 1) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipVectorTransformMatrixPoints(
|
||||
nativeMatrix, pts, count));
|
||||
}
|
||||
Status TransformVectors(Point *pts, INT count = 1) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipVectorTransformMatrixPointsI(
|
||||
nativeMatrix, pts, count));
|
||||
}
|
||||
Status Translate(REAL offsetX, REAL offsetY,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipTranslateMatrix(
|
||||
nativeMatrix, offsetX, offsetY, order));
|
||||
}
|
||||
|
||||
private:
|
||||
Matrix(GpMatrix *matrix, Status status):
|
||||
nativeMatrix(matrix), lastStatus(status) {}
|
||||
Matrix(const Matrix&);
|
||||
Matrix& operator=(const Matrix&);
|
||||
|
||||
Status updateStatus(Status newStatus) const
|
||||
{
|
||||
if (newStatus != Ok) lastStatus = newStatus;
|
||||
return newStatus;
|
||||
}
|
||||
|
||||
GpMatrix *nativeMatrix;
|
||||
mutable Status lastStatus;
|
||||
};
|
||||
|
||||
#undef GDIP_MATRIX_PI
|
||||
|
||||
#endif /* __GDIPLUS_MATRIX_H */
|
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
* gdiplusmem.h
|
||||
*
|
||||
* GDI+ memory allocation
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_MEM_H
|
||||
#define __GDIPLUS_MEM_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
namespace DllExports {
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
VOID* WINGDIPAPI GdipAlloc(size_t);
|
||||
VOID WINGDIPAPI GdipFree(VOID*);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
} /* namespace DllExports */
|
||||
#endif
|
||||
|
||||
#endif /* __GDIPLUS_MEM_H */
|
|
@ -0,0 +1,305 @@
|
|||
/*
|
||||
* gdiplusmetafile.h
|
||||
*
|
||||
* GDI+ Metafile class
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_METAFILE_H
|
||||
#define __GDIPLUS_METAFILE_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error "A C++ compiler is required to include gdiplusmetafile.h."
|
||||
#endif
|
||||
|
||||
class Metafile: public Image
|
||||
{
|
||||
public:
|
||||
static UINT EmfToWmfBits(HENHMETAFILE hEmf,
|
||||
UINT cbData16, LPBYTE pData16,
|
||||
INT iMapMode = MM_ANISOTROPIC,
|
||||
EmfToWmfBitsFlags eFlags = EmfToWmfBitsFlagsDefault)
|
||||
{
|
||||
return DllExports::GdipEmfToWmfBits(hEmf,
|
||||
cbData16, pData16, iMapMode, eFlags);
|
||||
}
|
||||
static Status GetMetafileHeader(const WCHAR *filename,
|
||||
MetafileHeader *header)
|
||||
{
|
||||
return DllExports::GdipGetMetafileHeaderFromFile(
|
||||
filename, header);
|
||||
}
|
||||
static Status GetMetafileHeader(IStream *stream, MetafileHeader *header)
|
||||
{
|
||||
return DllExports::GdipGetMetafileHeaderFromStream(
|
||||
stream, header);
|
||||
}
|
||||
////TODO: Metafile::GetMetafileHeader
|
||||
//static Status GetMetafileHeader(HMETAFILE hWmf,
|
||||
// const WmfPlaceableFileHeader *wmfPlaceableFileHeader,
|
||||
// MetafileHeader *header)
|
||||
//{
|
||||
// // WTF: No flat API to do this.
|
||||
// return NotImplemented;
|
||||
//}
|
||||
static Status GetMetafileHeader(HENHMETAFILE hEmf,
|
||||
MetafileHeader *header)
|
||||
{
|
||||
return DllExports::GdipGetMetafileHeaderFromEmf(hEmf, header);
|
||||
}
|
||||
|
||||
Metafile(HMETAFILE hWmf,
|
||||
const WmfPlaceableFileHeader *wmfPlaceableFileHeader,
|
||||
BOOL deleteWmf = FALSE): Image(NULL, Ok)
|
||||
{
|
||||
GpMetafile *nativeMetafile = NULL;
|
||||
lastStatus = DllExports::GdipCreateMetafileFromWmf(
|
||||
hWmf, deleteWmf, wmfPlaceableFileHeader,
|
||||
&nativeMetafile);
|
||||
nativeImage = nativeMetafile;
|
||||
}
|
||||
Metafile(HENHMETAFILE hEmf, BOOL deleteEmf = FALSE): Image(NULL, Ok)
|
||||
{
|
||||
GpMetafile *nativeMetafile = NULL;
|
||||
lastStatus = DllExports::GdipCreateMetafileFromEmf(
|
||||
hEmf, deleteEmf, &nativeMetafile);
|
||||
nativeImage = nativeMetafile;
|
||||
}
|
||||
Metafile(const WCHAR *filename): Image(NULL, Ok)
|
||||
{
|
||||
GpMetafile *nativeMetafile = NULL;
|
||||
lastStatus = DllExports::GdipCreateMetafileFromFile(
|
||||
filename, &nativeMetafile);
|
||||
nativeImage = nativeMetafile;
|
||||
}
|
||||
Metafile(const WCHAR *filename,
|
||||
const WmfPlaceableFileHeader *wmfPlaceableFileHeader):
|
||||
Image(NULL, Ok)
|
||||
{
|
||||
GpMetafile *nativeMetafile = NULL;
|
||||
lastStatus = DllExports::GdipCreateMetafileFromWmfFile(
|
||||
filename, wmfPlaceableFileHeader,
|
||||
&nativeMetafile);
|
||||
nativeImage = nativeMetafile;
|
||||
}
|
||||
Metafile(IStream *stream): Image(NULL, Ok)
|
||||
{
|
||||
GpMetafile *nativeMetafile = NULL;
|
||||
lastStatus = DllExports::GdipCreateMetafileFromStream(
|
||||
stream, &nativeMetafile);
|
||||
nativeImage = nativeMetafile;
|
||||
}
|
||||
Metafile(HDC referenceHdc, EmfType type = EmfTypeEmfPlusDual,
|
||||
const WCHAR *description = NULL): Image(NULL, Ok)
|
||||
{
|
||||
GpMetafile *nativeMetafile = NULL;
|
||||
lastStatus = DllExports::GdipRecordMetafile(
|
||||
referenceHdc, type, NULL, MetafileFrameUnitGdi,
|
||||
description, &nativeMetafile);
|
||||
nativeImage = nativeMetafile;
|
||||
}
|
||||
Metafile(HDC referenceHdc, const RectF& frameRect,
|
||||
MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,
|
||||
EmfType type = EmfTypeEmfPlusDual,
|
||||
const WCHAR *description = NULL): Image(NULL, Ok)
|
||||
{
|
||||
GpMetafile *nativeMetafile = NULL;
|
||||
lastStatus = DllExports::GdipRecordMetafile(
|
||||
referenceHdc, type, &frameRect, frameUnit,
|
||||
description, &nativeMetafile);
|
||||
nativeImage = nativeMetafile;
|
||||
}
|
||||
Metafile(HDC referenceHdc, const Rect& frameRect,
|
||||
MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,
|
||||
EmfType type = EmfTypeEmfPlusDual,
|
||||
const WCHAR *description = NULL): Image(NULL, Ok)
|
||||
{
|
||||
GpMetafile *nativeMetafile = NULL;
|
||||
lastStatus = DllExports::GdipRecordMetafileI(
|
||||
referenceHdc, type, &frameRect, frameUnit,
|
||||
description, &nativeMetafile);
|
||||
nativeImage = nativeMetafile;
|
||||
}
|
||||
Metafile(const WCHAR *filename, HDC referenceHdc,
|
||||
EmfType type = EmfTypeEmfPlusDual,
|
||||
const WCHAR *description = NULL): Image(NULL, Ok)
|
||||
{
|
||||
GpMetafile *nativeMetafile = NULL;
|
||||
lastStatus = DllExports::GdipRecordMetafileFileName(
|
||||
filename, referenceHdc, type, NULL,
|
||||
MetafileFrameUnitGdi, description,
|
||||
&nativeMetafile);
|
||||
nativeImage = nativeMetafile;
|
||||
}
|
||||
Metafile(const WCHAR *filename, HDC referenceHdc,
|
||||
const RectF& frameRect,
|
||||
MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,
|
||||
EmfType type = EmfTypeEmfPlusDual,
|
||||
const WCHAR *description = NULL): Image(NULL, Ok)
|
||||
{
|
||||
GpMetafile *nativeMetafile = NULL;
|
||||
lastStatus = DllExports::GdipRecordMetafileFileName(
|
||||
filename, referenceHdc, type, &frameRect,
|
||||
frameUnit, description, &nativeMetafile);
|
||||
nativeImage = nativeMetafile;
|
||||
}
|
||||
Metafile(const WCHAR *filename, HDC referenceHdc,
|
||||
const Rect& frameRect,
|
||||
MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,
|
||||
EmfType type = EmfTypeEmfPlusDual,
|
||||
const WCHAR *description = NULL): Image(NULL, Ok)
|
||||
{
|
||||
GpMetafile *nativeMetafile = NULL;
|
||||
lastStatus = DllExports::GdipRecordMetafileFileNameI(
|
||||
filename, referenceHdc, type, &frameRect,
|
||||
frameUnit, description, &nativeMetafile);
|
||||
nativeImage = nativeMetafile;
|
||||
}
|
||||
Metafile(IStream *stream, HDC referenceHdc,
|
||||
EmfType type = EmfTypeEmfPlusDual,
|
||||
const WCHAR *description = NULL): Image(NULL, Ok)
|
||||
{
|
||||
GpMetafile *nativeMetafile = NULL;
|
||||
lastStatus = DllExports::GdipRecordMetafileStream(
|
||||
stream, referenceHdc, type, NULL,
|
||||
MetafileFrameUnitGdi, description,
|
||||
&nativeMetafile);
|
||||
nativeImage = nativeMetafile;
|
||||
}
|
||||
Metafile(IStream *stream, HDC referenceHdc, const RectF& frameRect,
|
||||
MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,
|
||||
EmfType type = EmfTypeEmfPlusDual,
|
||||
const WCHAR *description = NULL): Image(NULL, Ok)
|
||||
{
|
||||
GpMetafile *nativeMetafile = NULL;
|
||||
lastStatus = DllExports::GdipRecordMetafileStream(
|
||||
stream, referenceHdc, type, &frameRect,
|
||||
frameUnit, description, &nativeMetafile);
|
||||
nativeImage = nativeMetafile;
|
||||
}
|
||||
Metafile(IStream *stream, HDC referenceHdc, const Rect& frameRect,
|
||||
MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,
|
||||
EmfType type = EmfTypeEmfPlusDual,
|
||||
const WCHAR *description = NULL): Image(NULL, Ok)
|
||||
{
|
||||
GpMetafile *nativeMetafile = NULL;
|
||||
lastStatus = DllExports::GdipRecordMetafileStreamI(
|
||||
stream, referenceHdc, type, &frameRect,
|
||||
frameUnit, description, &nativeMetafile);
|
||||
nativeImage = nativeMetafile;
|
||||
}
|
||||
virtual ~Metafile()
|
||||
{
|
||||
}
|
||||
virtual Metafile* Clone() const
|
||||
{
|
||||
GpImage *cloneImage = NULL;
|
||||
Status status = updateStatus(DllExports::GdipCloneImage(
|
||||
nativeImage, &cloneImage));
|
||||
if (status == Ok) {
|
||||
Metafile *result = new Metafile(cloneImage, lastStatus);
|
||||
if (!result) {
|
||||
DllExports::GdipDisposeImage(cloneImage);
|
||||
lastStatus = OutOfMemory;
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
////TODO: [GDI+ 1.1] Metafile::ConvertToEmfPlus
|
||||
//Status ConvertToEmfPlus(const Graphics *refGraphics,
|
||||
// BOOL *conversionSuccess = NULL,
|
||||
// EmfType emfType = EmfTypeEmfPlusOnly,
|
||||
// const WCHAR *description = NULL)
|
||||
//{
|
||||
// // FIXME: can't test GdipConvertToEmfPlus because it isn't exported in 1.0
|
||||
// return updateStatus(DllExports::GdipConvertToEmfPlus(
|
||||
// refGraphics ? refGraphics->nativeGraphics : NULL,
|
||||
// (GpMetafile*) nativeImage,
|
||||
// conversionSuccess, emfType, description, ???));
|
||||
//}
|
||||
////TODO: [GDI+ 1.1] Metafile::ConvertToEmfPlus
|
||||
//Status ConvertToEmfPlus(const Graphics *refGraphics,
|
||||
// const WCHAR *filename,
|
||||
// BOOL *conversionSuccess = NULL,
|
||||
// EmfType emfType = EmfTypeEmfPlusOnly,
|
||||
// const WCHAR *description = NULL)
|
||||
//{
|
||||
// // FIXME: can't test GdipConvertToEmfPlusToFile because it isn't exported in 1.0
|
||||
// return updateStatus(DllExports::GdipConvertToEmfPlusToFile(
|
||||
// refGraphics ? refGraphics->nativeGraphics : NULL,
|
||||
// (GpMetafile*) nativeImage, conversionSuccess,
|
||||
// filename, emfType, description, ???));
|
||||
//}
|
||||
////TODO: [GDI+ 1.1] Metafile::ConvertToEmfPlus
|
||||
//Status ConvertToEmfPlus(const Graphics *refGraphics,
|
||||
// IStream *stream,
|
||||
// BOOL *conversionSuccess = NULL,
|
||||
// EmfType emfType = EmfTypeEmfPlusOnly,
|
||||
// const WCHAR *description = NULL)
|
||||
//{
|
||||
// // FIXME: can't test GdipConvertToEmfPlusToStream because it isn't exported in 1.0
|
||||
// return updateStatus(DllExports::GdipConvertToEmfPlusToStream(
|
||||
// refGraphics ? refGraphics->nativeGraphics : NULL,
|
||||
// (GpMetafile*) nativeImage, conversionSuccess,
|
||||
// stream, emfType, description, ???));
|
||||
//}
|
||||
UINT GetDownLevelRasterizationLimit() const
|
||||
{
|
||||
UINT result = 0;
|
||||
updateStatus(DllExports::GdipGetMetafileDownLevelRasterizationLimit(
|
||||
(GpMetafile*) nativeImage, &result));
|
||||
return result;
|
||||
}
|
||||
HENHMETAFILE GetHENHMETAFILE()
|
||||
{
|
||||
HENHMETAFILE result = NULL;
|
||||
updateStatus(DllExports::GdipGetHemfFromMetafile(
|
||||
(GpMetafile*) nativeImage, &result));
|
||||
return result;
|
||||
}
|
||||
Status GetMetafileHeader(MetafileHeader *header) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetMetafileHeaderFromMetafile(
|
||||
(GpMetafile*) nativeImage, header));
|
||||
}
|
||||
Status PlayRecord(EmfPlusRecordType recordType, UINT flags,
|
||||
UINT dataSize, const BYTE *data) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipPlayMetafileRecord(
|
||||
(GpMetafile*) nativeImage,
|
||||
recordType, flags, dataSize, data));
|
||||
}
|
||||
Status SetDownLevelRasterizationLimit(UINT limitDpi)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetMetafileDownLevelRasterizationLimit(
|
||||
(GpMetafile*) nativeImage, limitDpi));
|
||||
}
|
||||
|
||||
private:
|
||||
Metafile(GpImage *image, Status status): Image(image, status) {}
|
||||
Metafile(const Metafile&);
|
||||
Metafile& operator=(const Metafile&);
|
||||
};
|
||||
|
||||
#endif /* __GDIPLUS_METAFILE_H */
|
|
@ -0,0 +1,193 @@
|
|||
/*
|
||||
* gdiplusmetaheader.h
|
||||
*
|
||||
* GDI+ metafile header structure
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_METAHEADER_H
|
||||
#define __GDIPLUS_METAHEADER_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* FIXME: is 1 the correct value for GDIP_EMFPLUSFLAGS_DISPLAY? This number
|
||||
* has been determined by calling Metafile::GetMetafileHeader() on a EMF+
|
||||
* metafile which was recorded on a display device context (SampleMetafile.emf).
|
||||
*/
|
||||
#ifdef __cplusplus
|
||||
const UINT GDIP_EMFPLUSFLAGS_DISPLAY = 1;
|
||||
#else
|
||||
#define GDIP_EMFPLUSFLAGS_DISPLAY ((UINT) 1)
|
||||
#endif
|
||||
|
||||
typedef struct tagENHMETAHEADER3 {
|
||||
DWORD iType;
|
||||
DWORD nSize;
|
||||
RECTL rclBounds;
|
||||
RECTL rclFrame;
|
||||
DWORD dSignature;
|
||||
DWORD nVersion;
|
||||
DWORD nBytes;
|
||||
DWORD nRecords;
|
||||
WORD nHandles;
|
||||
WORD sReserved;
|
||||
DWORD nDescription;
|
||||
DWORD offDescription;
|
||||
DWORD nPalEntries;
|
||||
SIZEL szlDevice;
|
||||
SIZEL szlMillimeters;
|
||||
} ENHMETAHEADER3,*LPENHMETAHEADER3;
|
||||
|
||||
typedef struct PWMFRect16 {
|
||||
INT16 Left;
|
||||
INT16 Top;
|
||||
INT16 Right;
|
||||
INT16 Bottom;
|
||||
} PWMFRect16;
|
||||
|
||||
typedef struct WmfPlaceableFileHeader {
|
||||
UINT32 Key;
|
||||
INT16 Hmf;
|
||||
PWMFRect16 BoundingBox;
|
||||
INT16 Inch;
|
||||
UINT32 Reserved;
|
||||
INT16 Checksum;
|
||||
} WmfPlaceableFileHeader;
|
||||
|
||||
typedef struct MetafileHeader {
|
||||
MetafileType Type;
|
||||
UINT Size;
|
||||
UINT Version;
|
||||
UINT EmfPlusFlags;
|
||||
REAL DpiX;
|
||||
REAL DpiY;
|
||||
INT X;
|
||||
INT Y;
|
||||
INT Width;
|
||||
INT Height;
|
||||
__extension__ union {
|
||||
METAHEADER WmfHeader;
|
||||
ENHMETAHEADER3 EmfHeader;
|
||||
};
|
||||
INT EmfPlusHeaderSize;
|
||||
INT LogicalDpiX;
|
||||
INT LogicalDpiY;
|
||||
|
||||
#ifdef __cplusplus
|
||||
public:
|
||||
void GetBounds(Rect *rect) const
|
||||
{
|
||||
if (rect)
|
||||
{
|
||||
rect->X = X;
|
||||
rect->Y = Y;
|
||||
rect->Width = Width;
|
||||
rect->Height = Height;
|
||||
}
|
||||
}
|
||||
REAL GetDpiX() const
|
||||
{
|
||||
return DpiX;
|
||||
}
|
||||
REAL GetDpiY() const
|
||||
{
|
||||
return DpiY;
|
||||
}
|
||||
const ENHMETAHEADER3* GetEmfHeader() const
|
||||
{
|
||||
if (Type == MetafileTypeEmf
|
||||
|| Type == MetafileTypeEmfPlusOnly
|
||||
|| Type == MetafileTypeEmfPlusDual)
|
||||
{
|
||||
return &EmfHeader;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
UINT GetEmfPlusFlags() const
|
||||
{
|
||||
return EmfPlusFlags;
|
||||
}
|
||||
UINT GetMetafileSize() const
|
||||
{
|
||||
return Size;
|
||||
}
|
||||
MetafileType GetType() const
|
||||
{
|
||||
return Type;
|
||||
}
|
||||
UINT GetVersion() const
|
||||
{
|
||||
return Version;
|
||||
}
|
||||
const METAHEADER* GetWmfHeader() const
|
||||
{
|
||||
if (Type == MetafileTypeWmf || Type == MetafileTypeWmfPlaceable)
|
||||
{
|
||||
return &WmfHeader;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
BOOL IsDisplay() const
|
||||
{
|
||||
return EmfPlusFlags == GDIP_EMFPLUSFLAGS_DISPLAY;
|
||||
}
|
||||
BOOL IsEmf() const
|
||||
{
|
||||
return Type == MetafileTypeEmf;
|
||||
}
|
||||
BOOL IsEmfOrEmfPlus() const
|
||||
{
|
||||
return Type == MetafileTypeEmf
|
||||
|| Type == MetafileTypeEmfPlusOnly
|
||||
|| Type == MetafileTypeEmfPlusDual;
|
||||
}
|
||||
BOOL IsEmfPlus() const
|
||||
{
|
||||
return Type == MetafileTypeEmfPlusOnly
|
||||
|| Type == MetafileTypeEmfPlusDual;
|
||||
}
|
||||
BOOL IsEmfPlusDual() const
|
||||
{
|
||||
return Type == MetafileTypeEmfPlusDual;
|
||||
}
|
||||
BOOL IsEmfPlusOnly() const
|
||||
{
|
||||
return Type == MetafileTypeEmfPlusOnly;
|
||||
}
|
||||
BOOL IsWmf() const
|
||||
{
|
||||
return Type == MetafileTypeWmf
|
||||
|| Type == MetafileTypeWmfPlaceable;
|
||||
}
|
||||
BOOL IsWmfPlaceable() const
|
||||
{
|
||||
return Type == MetafileTypeWmfPlaceable;
|
||||
}
|
||||
#endif
|
||||
} MetafileHeader;
|
||||
|
||||
#endif /* __GDIPLUS_METAHEADER_H */
|
|
@ -0,0 +1,964 @@
|
|||
/*
|
||||
* gdipluspath.h
|
||||
*
|
||||
* GDI+ GraphicsPath class
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_PATH_H
|
||||
#define __GDIPLUS_PATH_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error "A C++ compiler is required to include gdipluspath.h."
|
||||
#endif
|
||||
|
||||
// Note that some methods of GraphicsPath are implemented in gdiplusimpl.h.
|
||||
// This avoids a cyclic dependency on Graphics and Pen.
|
||||
|
||||
class GraphicsPath: public GdiplusBase
|
||||
{
|
||||
friend class CustomLineCap;
|
||||
friend class Graphics;
|
||||
friend class GraphicsPathIterator;
|
||||
friend class PathGradientBrush;
|
||||
friend class Region;
|
||||
|
||||
public:
|
||||
GraphicsPath(FillMode fillMode = FillModeAlternate):
|
||||
nativePath(NULL), lastStatus(Ok)
|
||||
{
|
||||
lastStatus = DllExports::GdipCreatePath(fillMode, &nativePath);
|
||||
}
|
||||
GraphicsPath(const PointF *points, const BYTE *types, INT count,
|
||||
FillMode fillMode = FillModeAlternate):
|
||||
nativePath(NULL), lastStatus(Ok)
|
||||
{
|
||||
lastStatus = DllExports::GdipCreatePath2(
|
||||
points, types, count, fillMode, &nativePath);
|
||||
}
|
||||
GraphicsPath(const Point *points, const BYTE *types, INT count,
|
||||
FillMode fillMode = FillModeAlternate):
|
||||
nativePath(NULL), lastStatus(Ok)
|
||||
{
|
||||
lastStatus = DllExports::GdipCreatePath2I(
|
||||
points, types, count, fillMode, &nativePath);
|
||||
}
|
||||
~GraphicsPath()
|
||||
{
|
||||
DllExports::GdipDeletePath(nativePath);
|
||||
}
|
||||
GraphicsPath* Clone() const
|
||||
{
|
||||
GpPath *clonePath = NULL;
|
||||
Status status = updateStatus(DllExports::GdipClonePath(
|
||||
nativePath, &clonePath));
|
||||
if (status == Ok) {
|
||||
GraphicsPath *result = new GraphicsPath(clonePath, lastStatus);
|
||||
if (!result) {
|
||||
DllExports::GdipDeletePath(clonePath);
|
||||
lastStatus = OutOfMemory;
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
Status AddArc(REAL x, REAL y, REAL width, REAL height,
|
||||
REAL startAngle, REAL sweepAngle)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathArc(nativePath,
|
||||
x, y, width, height, startAngle, sweepAngle));
|
||||
}
|
||||
Status AddArc(INT x, INT y, INT width, INT height,
|
||||
REAL startAngle, REAL sweepAngle)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathArcI(nativePath,
|
||||
x, y, width, height, startAngle, sweepAngle));
|
||||
}
|
||||
Status AddArc(const RectF& rect, REAL startAngle, REAL sweepAngle)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathArc(nativePath,
|
||||
rect.X, rect.Y, rect.Width, rect.Height,
|
||||
startAngle, sweepAngle));
|
||||
}
|
||||
Status AddArc(const Rect& rect, REAL startAngle, REAL sweepAngle)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathArcI(nativePath,
|
||||
rect.X, rect.Y, rect.Width, rect.Height,
|
||||
startAngle, sweepAngle));
|
||||
}
|
||||
Status AddBezier(REAL x1, REAL y1, REAL x2, REAL y2,
|
||||
REAL x3, REAL y3, REAL x4, REAL y4)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathBezier(nativePath,
|
||||
x1, y1, x2, y2, x3, y3, x4, y4));
|
||||
}
|
||||
Status AddBezier(INT x1, INT y1, INT x2, INT y2,
|
||||
INT x3, INT y3, INT x4, INT y4)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathBezierI(nativePath,
|
||||
x1, y1, x2, y2, x3, y3, x4, y4));
|
||||
}
|
||||
Status AddBezier(const PointF& pt1, const PointF& pt2,
|
||||
const PointF& pt3, const PointF& pt4)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathBezier(nativePath,
|
||||
pt1.X, pt1.Y, pt2.X, pt2.Y,
|
||||
pt3.X, pt3.Y, pt4.X, pt4.Y));
|
||||
}
|
||||
Status AddBezier(const Point& pt1, const Point& pt2,
|
||||
const Point& pt3, const Point& pt4)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathBezierI(nativePath,
|
||||
pt1.X, pt1.Y, pt2.X, pt2.Y,
|
||||
pt3.X, pt3.Y, pt4.X, pt4.Y));
|
||||
}
|
||||
Status AddBeziers(const PointF *points, INT count)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathBeziers(
|
||||
nativePath, points, count));
|
||||
}
|
||||
Status AddBeziers(const Point *points, INT count)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathBeziersI(
|
||||
nativePath, points, count));
|
||||
}
|
||||
Status AddClosedCurve(const PointF *points, INT count)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathClosedCurve(
|
||||
nativePath, points, count));
|
||||
}
|
||||
Status AddClosedCurve(const Point *points, INT count)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathClosedCurveI(
|
||||
nativePath, points, count));
|
||||
}
|
||||
Status AddClosedCurve(const PointF *points, INT count, REAL tension)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathClosedCurve2(
|
||||
nativePath, points, count, tension));
|
||||
}
|
||||
Status AddClosedCurve(const Point *points, INT count, REAL tension)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathClosedCurve2I(
|
||||
nativePath, points, count, tension));
|
||||
}
|
||||
Status AddCurve(const PointF *points, INT count)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathCurve(
|
||||
nativePath, points, count));
|
||||
}
|
||||
Status AddCurve(const Point *points, INT count)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathCurveI(
|
||||
nativePath, points, count));
|
||||
}
|
||||
Status AddCurve(const PointF *points, INT count, REAL tension)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathCurve2(
|
||||
nativePath, points, count, tension));
|
||||
}
|
||||
Status AddCurve(const Point *points, INT count, REAL tension)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathCurve2I(
|
||||
nativePath, points, count, tension));
|
||||
}
|
||||
Status AddCurve(const PointF *points, INT count, INT offset,
|
||||
INT numberOfSegments, REAL tension)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathCurve3(
|
||||
nativePath, points, count,
|
||||
offset, numberOfSegments, tension));
|
||||
}
|
||||
Status AddCurve(const Point *points, INT count, INT offset,
|
||||
INT numberOfSegments, REAL tension)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathCurve3I(
|
||||
nativePath, points, count,
|
||||
offset, numberOfSegments, tension));
|
||||
}
|
||||
Status AddEllipse(REAL x, REAL y, REAL width, REAL height)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathEllipse(nativePath,
|
||||
x, y, width, height));
|
||||
}
|
||||
Status AddEllipse(INT x, INT y, INT width, INT height)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathEllipseI(nativePath,
|
||||
x, y, width, height));
|
||||
}
|
||||
Status AddEllipse(const RectF& rect)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathEllipse(nativePath,
|
||||
rect.X, rect.Y, rect.Width, rect.Height));
|
||||
}
|
||||
Status AddEllipse(const Rect& rect)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathEllipseI(nativePath,
|
||||
rect.X, rect.Y, rect.Width, rect.Height));
|
||||
}
|
||||
Status AddLine(REAL x1, REAL y1, REAL x2, REAL y2)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathLine(nativePath,
|
||||
x1, y1, x2, y2));
|
||||
}
|
||||
Status AddLine(INT x1, INT y1, INT x2, INT y2)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathLineI(nativePath,
|
||||
x1, y1, x2, y2));
|
||||
}
|
||||
Status AddLine(const PointF& pt1, const PointF& pt2)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathLine(nativePath,
|
||||
pt1.X, pt1.Y, pt2.X, pt2.Y));
|
||||
}
|
||||
Status AddLine(const Point& pt1, const Point& pt2)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathLineI(nativePath,
|
||||
pt1.X, pt1.Y, pt2.X, pt2.Y));
|
||||
}
|
||||
Status AddLines(const PointF *points, INT count)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathLine2(nativePath,
|
||||
points, count));
|
||||
}
|
||||
Status AddLines(const Point *points, INT count)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathLine2I(nativePath,
|
||||
points, count));
|
||||
}
|
||||
Status AddPath(const GraphicsPath *addingPath, BOOL connect)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathPath(nativePath,
|
||||
addingPath ? addingPath->nativePath : NULL,
|
||||
connect));
|
||||
}
|
||||
Status AddPie(REAL x, REAL y, REAL width, REAL height,
|
||||
REAL startAngle, REAL sweepAngle)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathPie(nativePath,
|
||||
x, y, width, height, startAngle, sweepAngle));
|
||||
}
|
||||
Status AddPie(INT x, INT y, INT width, INT height,
|
||||
REAL startAngle, REAL sweepAngle)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathPieI(nativePath,
|
||||
x, y, width, height, startAngle, sweepAngle));
|
||||
}
|
||||
Status AddPie(const RectF& rect, REAL startAngle, REAL sweepAngle)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathPie(nativePath,
|
||||
rect.X, rect.Y, rect.Width, rect.Height,
|
||||
startAngle, sweepAngle));
|
||||
}
|
||||
Status AddPie(const Rect& rect, REAL startAngle, REAL sweepAngle)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathPieI(nativePath,
|
||||
rect.X, rect.Y, rect.Width, rect.Height,
|
||||
startAngle, sweepAngle));
|
||||
}
|
||||
Status AddPolygon(const PointF *points, INT count)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathPolygon(nativePath,
|
||||
points, count));
|
||||
}
|
||||
Status AddPolygon(const Point *points, INT count)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathPolygonI(nativePath,
|
||||
points, count));
|
||||
}
|
||||
Status AddRectangle(const RectF& rect)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathRectangle(nativePath,
|
||||
rect.X, rect.Y, rect.Width, rect.Height));
|
||||
}
|
||||
Status AddRectangle(const Rect& rect)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathRectangleI(
|
||||
nativePath,
|
||||
rect.X, rect.Y, rect.Width, rect.Height));
|
||||
}
|
||||
Status AddRectangles(const RectF *rects, INT count)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathRectangles(
|
||||
nativePath, rects, count));
|
||||
}
|
||||
Status AddRectangles(const Rect *rects, INT count)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathRectanglesI(
|
||||
nativePath, rects, count));
|
||||
}
|
||||
Status AddString(const WCHAR *string, INT length,
|
||||
const FontFamily *family, INT style, REAL emSize,
|
||||
const PointF& origin, const StringFormat *format)
|
||||
{
|
||||
RectF layoutRect(origin, SizeF(0.0f, 0.0f));
|
||||
return updateStatus(DllExports::GdipAddPathString(nativePath,
|
||||
string, length,
|
||||
family ? family->nativeFontFamily : NULL,
|
||||
style, emSize, &layoutRect,
|
||||
format ? format->nativeStringFormat : NULL));
|
||||
}
|
||||
Status AddString(const WCHAR *string, INT length,
|
||||
const FontFamily *family, INT style, REAL emSize,
|
||||
const Point& origin, const StringFormat *format)
|
||||
{
|
||||
Rect layoutRect(origin, Size(0, 0));
|
||||
return updateStatus(DllExports::GdipAddPathStringI(nativePath,
|
||||
string, length,
|
||||
family ? family->nativeFontFamily : NULL,
|
||||
style, emSize, &layoutRect,
|
||||
format ? format->nativeStringFormat : NULL));
|
||||
}
|
||||
Status AddString(const WCHAR *string, INT length,
|
||||
const FontFamily *family, INT style, REAL emSize,
|
||||
const RectF& layoutRect, const StringFormat *format)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathString(nativePath,
|
||||
string, length,
|
||||
family ? family->nativeFontFamily : NULL,
|
||||
style, emSize, &layoutRect,
|
||||
format ? format->nativeStringFormat : NULL));
|
||||
}
|
||||
Status AddString(const WCHAR *string, INT length,
|
||||
const FontFamily *family, INT style, REAL emSize,
|
||||
const Rect& layoutRect, const StringFormat *format)
|
||||
{
|
||||
return updateStatus(DllExports::GdipAddPathStringI(nativePath,
|
||||
string, length,
|
||||
family ? family->nativeFontFamily : NULL,
|
||||
style, emSize, &layoutRect,
|
||||
format ? format->nativeStringFormat : NULL));
|
||||
}
|
||||
Status ClearMarkers()
|
||||
{
|
||||
return updateStatus(DllExports::GdipClearPathMarkers(
|
||||
nativePath));
|
||||
}
|
||||
Status CloseAllFigures()
|
||||
{
|
||||
return updateStatus(DllExports::GdipClosePathFigures(
|
||||
nativePath));
|
||||
}
|
||||
Status CloseFigure()
|
||||
{
|
||||
return updateStatus(DllExports::GdipClosePathFigure(
|
||||
nativePath));
|
||||
}
|
||||
Status Flatten(const Matrix *matrix = NULL,
|
||||
REAL flatness = FlatnessDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipFlattenPath(nativePath,
|
||||
matrix ? matrix->nativeMatrix : NULL,
|
||||
flatness));
|
||||
}
|
||||
Status GetBounds(RectF *bounds, const Matrix *matrix = NULL,
|
||||
const Pen *pen = NULL) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPathWorldBounds(
|
||||
nativePath, bounds,
|
||||
matrix ? matrix->nativeMatrix : NULL,
|
||||
pen ? pen->nativePen : NULL));
|
||||
}
|
||||
Status GetBounds(Rect *bounds, const Matrix *matrix = NULL,
|
||||
const Pen *pen = NULL) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPathWorldBoundsI(
|
||||
nativePath, bounds,
|
||||
matrix ? matrix->nativeMatrix : NULL,
|
||||
pen ? pen->nativePen : NULL));
|
||||
}
|
||||
FillMode GetFillMode() const
|
||||
{
|
||||
FillMode result = FillModeAlternate;
|
||||
updateStatus(DllExports::GdipGetPathFillMode(nativePath,
|
||||
&result));
|
||||
return result;
|
||||
}
|
||||
Status GetLastPoint(PointF *lastPoint) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPathLastPoint(
|
||||
nativePath, lastPoint));
|
||||
}
|
||||
Status GetLastStatus() const
|
||||
{
|
||||
Status result = lastStatus;
|
||||
lastStatus = Ok;
|
||||
return result;
|
||||
}
|
||||
Status GetPathData(PathData *pathData) const
|
||||
{
|
||||
if (!pathData) return lastStatus = InvalidParameter;
|
||||
|
||||
Status status;
|
||||
INT count;
|
||||
|
||||
status = updateStatus(DllExports::GdipGetPointCount(
|
||||
nativePath, &count));
|
||||
if (status != Ok) return status;
|
||||
|
||||
status = updateStatus(pathData->AllocateArrays(count));
|
||||
if (status != Ok) return status;
|
||||
|
||||
return updateStatus(DllExports::GdipGetPathData(
|
||||
nativePath, (GpPathData*) pathData));
|
||||
}
|
||||
Status GetPathPoints(PointF *points, INT count) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPathPoints(nativePath,
|
||||
points, count));
|
||||
}
|
||||
Status GetPathPoints(Point *points, INT count) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPathPointsI(nativePath,
|
||||
points, count));
|
||||
}
|
||||
Status GetPathTypes(BYTE *types, INT count) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPathTypes(nativePath,
|
||||
types, count));
|
||||
}
|
||||
INT GetPointCount() const
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipGetPointCount(nativePath,
|
||||
&result));
|
||||
return result;
|
||||
}
|
||||
BOOL IsOutlineVisible(REAL x, REAL y, const Pen *pen,
|
||||
const Graphics *g = NULL) const;
|
||||
BOOL IsOutlineVisible(INT x, INT y, const Pen *pen,
|
||||
const Graphics *g = NULL) const;
|
||||
BOOL IsOutlineVisible(const PointF& point, const Pen *pen,
|
||||
const Graphics *g = NULL) const;
|
||||
BOOL IsOutlineVisible(const Point& point, const Pen *pen,
|
||||
const Graphics *g = NULL) const;
|
||||
BOOL IsVisible(REAL x, REAL y, const Graphics *g = NULL) const;
|
||||
BOOL IsVisible(INT x, INT y, const Graphics *g = NULL) const;
|
||||
BOOL IsVisible(const PointF& point, const Graphics *g = NULL) const;
|
||||
BOOL IsVisible(const Point& point, const Graphics *g = NULL) const;
|
||||
Status Outline(const Matrix *matrix = NULL,
|
||||
REAL flatness = FlatnessDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipWindingModeOutline(
|
||||
nativePath,
|
||||
matrix ? matrix->nativeMatrix : NULL,
|
||||
flatness));
|
||||
}
|
||||
Status Reset()
|
||||
{
|
||||
return updateStatus(DllExports::GdipResetPath(nativePath));
|
||||
}
|
||||
Status Reverse()
|
||||
{
|
||||
return updateStatus(DllExports::GdipReversePath(nativePath));
|
||||
}
|
||||
Status SetFillMode(FillMode fillMode)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPathFillMode(
|
||||
nativePath, fillMode));
|
||||
}
|
||||
Status SetMarker()
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPathMarker(nativePath));
|
||||
}
|
||||
Status StartFigure()
|
||||
{
|
||||
return updateStatus(DllExports::GdipStartPathFigure(
|
||||
nativePath));
|
||||
}
|
||||
Status Transform(const Matrix *matrix)
|
||||
{
|
||||
return updateStatus(DllExports::GdipTransformPath(
|
||||
nativePath,
|
||||
matrix ? matrix->nativeMatrix : NULL));
|
||||
}
|
||||
Status Warp(const PointF *destPoints, INT count, const RectF& srcRect,
|
||||
const Matrix *matrix = NULL,
|
||||
WarpMode warpMode = WarpModePerspective,
|
||||
REAL flatness = FlatnessDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipWarpPath(nativePath,
|
||||
matrix ? matrix->nativeMatrix : NULL,
|
||||
destPoints, count,
|
||||
srcRect.X, srcRect.Y,
|
||||
srcRect.Width, srcRect.Height,
|
||||
warpMode, flatness));
|
||||
}
|
||||
Status Widen(const Pen *pen, const Matrix *matrix = NULL,
|
||||
REAL flatness = FlatnessDefault)
|
||||
{
|
||||
return updateStatus(DllExports::GdipWidenPath(nativePath,
|
||||
pen ? pen->nativePen : NULL,
|
||||
matrix ? matrix->nativeMatrix : NULL,
|
||||
flatness));
|
||||
}
|
||||
|
||||
private:
|
||||
GraphicsPath(GpPath *path, Status status):
|
||||
nativePath(path), lastStatus(status) {}
|
||||
GraphicsPath(const GraphicsPath&);
|
||||
GraphicsPath& operator=(const GraphicsPath&);
|
||||
|
||||
Status updateStatus(Status newStatus) const
|
||||
{
|
||||
if (newStatus != Ok) lastStatus = newStatus;
|
||||
return newStatus;
|
||||
}
|
||||
|
||||
GpPath *nativePath;
|
||||
mutable Status lastStatus;
|
||||
};
|
||||
|
||||
class GraphicsPathIterator: public GdiplusBase
|
||||
{
|
||||
public:
|
||||
GraphicsPathIterator(GraphicsPath *path):
|
||||
nativePathIterator(NULL), lastStatus(Ok)
|
||||
{
|
||||
lastStatus = DllExports::GdipCreatePathIter(
|
||||
&nativePathIterator,
|
||||
path ? path->nativePath : NULL);
|
||||
}
|
||||
~GraphicsPathIterator()
|
||||
{
|
||||
DllExports::GdipDeletePathIter(nativePathIterator);
|
||||
}
|
||||
|
||||
INT CopyData(PointF *points, BYTE *types, INT startIndex, INT endIndex)
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipPathIterCopyData(
|
||||
nativePathIterator, &result,
|
||||
points, types, startIndex, endIndex));
|
||||
return result;
|
||||
}
|
||||
INT Enumerate(PointF *points, BYTE *types, INT count)
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipPathIterEnumerate(
|
||||
nativePathIterator, &result,
|
||||
points, types, count));
|
||||
return result;
|
||||
}
|
||||
INT GetCount() const
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipPathIterGetCount(
|
||||
nativePathIterator, &result));
|
||||
return result;
|
||||
}
|
||||
Status GetLastStatus() const
|
||||
{
|
||||
Status result = lastStatus;
|
||||
lastStatus = Ok;
|
||||
return result;
|
||||
}
|
||||
INT GetSubpathCount() const
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipPathIterGetSubpathCount(
|
||||
nativePathIterator, &result));
|
||||
return result;
|
||||
}
|
||||
BOOL HasCurve() const
|
||||
{
|
||||
BOOL result = FALSE;
|
||||
updateStatus(DllExports::GdipPathIterHasCurve(
|
||||
nativePathIterator, &result));
|
||||
return result;
|
||||
}
|
||||
INT NextMarker(INT *startIndex, INT *endIndex)
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipPathIterNextMarker(
|
||||
nativePathIterator, &result,
|
||||
startIndex, endIndex));
|
||||
return result;
|
||||
}
|
||||
INT NextMarker(GraphicsPath *path)
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipPathIterNextMarkerPath(
|
||||
nativePathIterator, &result,
|
||||
path ? path->nativePath : NULL));
|
||||
return result;
|
||||
}
|
||||
INT NextPathType(BYTE *pathType, INT *startIndex, INT *endIndex)
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipPathIterNextPathType(
|
||||
nativePathIterator, &result,
|
||||
pathType, startIndex, endIndex));
|
||||
return result;
|
||||
}
|
||||
INT NextSubpath(INT *startIndex, INT *endIndex, BOOL *isClosed)
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipPathIterNextSubpath(
|
||||
nativePathIterator, &result,
|
||||
startIndex, endIndex, isClosed));
|
||||
return result;
|
||||
}
|
||||
INT NextSubpath(GraphicsPath *path, BOOL *isClosed)
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipPathIterNextSubpathPath(
|
||||
nativePathIterator, &result,
|
||||
path ? path->nativePath : NULL, isClosed));
|
||||
return result;
|
||||
}
|
||||
VOID Rewind()
|
||||
{
|
||||
updateStatus(DllExports::GdipPathIterRewind(
|
||||
nativePathIterator));
|
||||
}
|
||||
|
||||
private:
|
||||
GraphicsPathIterator(GpPathIterator *pathIterator, Status status):
|
||||
nativePathIterator(pathIterator), lastStatus(status) {}
|
||||
GraphicsPathIterator(const GraphicsPathIterator&);
|
||||
GraphicsPathIterator& operator=(const GraphicsPathIterator&);
|
||||
|
||||
Status updateStatus(Status newStatus) const
|
||||
{
|
||||
if (newStatus != Ok) lastStatus = newStatus;
|
||||
return newStatus;
|
||||
}
|
||||
|
||||
GpPathIterator *nativePathIterator;
|
||||
mutable Status lastStatus;
|
||||
};
|
||||
|
||||
class PathGradientBrush: public Brush
|
||||
{
|
||||
public:
|
||||
PathGradientBrush(const PointF *points, INT count,
|
||||
WrapMode wrapMode = WrapModeClamp)
|
||||
{
|
||||
GpPathGradient *nativePathGradient = NULL;
|
||||
lastStatus = DllExports::GdipCreatePathGradient(
|
||||
points, count, wrapMode, &nativePathGradient);
|
||||
nativeBrush = nativePathGradient;
|
||||
}
|
||||
PathGradientBrush(const Point *points, INT count,
|
||||
WrapMode wrapMode = WrapModeClamp)
|
||||
{
|
||||
GpPathGradient *nativePathGradient = NULL;
|
||||
lastStatus = DllExports::GdipCreatePathGradientI(
|
||||
points, count, wrapMode, &nativePathGradient);
|
||||
nativeBrush = nativePathGradient;
|
||||
}
|
||||
PathGradientBrush(const GraphicsPath *path)
|
||||
{
|
||||
GpPathGradient *nativePathGradient = NULL;
|
||||
lastStatus = DllExports::GdipCreatePathGradientFromPath(
|
||||
path ? path->nativePath : NULL,
|
||||
&nativePathGradient);
|
||||
nativeBrush = nativePathGradient;
|
||||
}
|
||||
virtual PathGradientBrush *Clone() const
|
||||
{
|
||||
GpBrush *cloneBrush = NULL;
|
||||
Status status = updateStatus(DllExports::GdipCloneBrush(
|
||||
nativeBrush, &cloneBrush));
|
||||
if (status == Ok) {
|
||||
PathGradientBrush *result =
|
||||
new PathGradientBrush(cloneBrush, lastStatus);
|
||||
if (!result) {
|
||||
DllExports::GdipDeleteBrush(cloneBrush);
|
||||
updateStatus(OutOfMemory);
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
Status GetBlend(REAL *blendFactors, REAL *blendPositions,
|
||||
INT count) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPathGradientBlend(
|
||||
(GpPathGradient*) nativeBrush,
|
||||
blendFactors, blendPositions, count));
|
||||
}
|
||||
INT GetBlendCount() const
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipGetPathGradientBlendCount(
|
||||
(GpPathGradient*) nativeBrush, &result));
|
||||
return result;
|
||||
}
|
||||
Status GetCenterColor(Color *color) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPathGradientCenterColor(
|
||||
(GpPathGradient*) nativeBrush,
|
||||
color ? &color->Value : NULL));
|
||||
}
|
||||
Status GetCenterPoint(PointF *point) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPathGradientCenterPoint(
|
||||
(GpPathGradient*) nativeBrush, point));
|
||||
}
|
||||
Status GetCenterPoint(Point *point) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPathGradientCenterPointI(
|
||||
(GpPathGradient*) nativeBrush, point));
|
||||
}
|
||||
Status GetFocusScales(REAL *xScale, REAL *yScale) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPathGradientFocusScales(
|
||||
(GpPathGradient*) nativeBrush, xScale, yScale));
|
||||
}
|
||||
BOOL GetGammaCorrection() const
|
||||
{
|
||||
BOOL result = FALSE;
|
||||
updateStatus(DllExports::GdipGetPathGradientGammaCorrection(
|
||||
(GpPathGradient*) nativeBrush, &result));
|
||||
return result;
|
||||
}
|
||||
//Status GetGraphicsPath(GraphicsPath *path) const
|
||||
//{
|
||||
// // TODO: implement PathGradientBrush::GetGraphicsPath
|
||||
// return updateStatus(NotImplemented);
|
||||
//}
|
||||
INT GetInterpolationColorCount() const
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipGetPathGradientPresetBlendCount(
|
||||
(GpPathGradient*) nativeBrush, &result));
|
||||
return result;
|
||||
}
|
||||
Status GetInterpolationColors(Color *presetColors,
|
||||
REAL *blendPositions, INT count) const
|
||||
{
|
||||
if (!presetColors || count <= 0)
|
||||
return lastStatus = InvalidParameter;
|
||||
|
||||
ARGB *presetArgb =
|
||||
(ARGB*) DllExports::GdipAlloc(count * sizeof(ARGB));
|
||||
if (!presetArgb)
|
||||
return lastStatus = OutOfMemory;
|
||||
|
||||
Status status = updateStatus(DllExports::GdipGetPathGradientPresetBlend(
|
||||
(GpPathGradient*) nativeBrush,
|
||||
presetArgb, blendPositions, count));
|
||||
for (INT i = 0; i < count; ++i) {
|
||||
presetColors[i].SetValue(presetArgb[i]);
|
||||
}
|
||||
DllExports::GdipFree((void*) presetArgb);
|
||||
return status;
|
||||
}
|
||||
INT GetPointCount() const
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipGetPathGradientPointCount(
|
||||
(GpPathGradient*) nativeBrush, &result));
|
||||
return result;
|
||||
}
|
||||
Status GetRectangle(RectF *rect) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPathGradientRect(
|
||||
(GpPathGradient*) nativeBrush, rect));
|
||||
}
|
||||
Status GetRectangle(Rect *rect) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPathGradientRectI(
|
||||
(GpPathGradient*) nativeBrush, rect));
|
||||
}
|
||||
INT GetSurroundColorCount() const
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipGetPathGradientSurroundColorCount(
|
||||
(GpPathGradient*) nativeBrush, &result));
|
||||
return result;
|
||||
}
|
||||
Status GetSurroundColors(Color *colors, INT *count)
|
||||
{
|
||||
if (!colors || !count || *count <= 0)
|
||||
return lastStatus = InvalidParameter;
|
||||
|
||||
ARGB *colorsArgb =
|
||||
(ARGB*) DllExports::GdipAlloc(*count * sizeof(ARGB));
|
||||
if (!colorsArgb)
|
||||
return lastStatus = OutOfMemory;
|
||||
|
||||
Status status = updateStatus(DllExports::GdipGetPathGradientSurroundColorsWithCount(
|
||||
(GpPathGradient*) nativeBrush,
|
||||
colorsArgb, count));
|
||||
for (INT i = 0; i < *count; ++i) {
|
||||
colors[i].SetValue(colorsArgb[i]);
|
||||
}
|
||||
DllExports::GdipFree((void*) colorsArgb);
|
||||
return status;
|
||||
}
|
||||
Status GetTransform(Matrix *matrix) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPathGradientTransform(
|
||||
(GpPathGradient*) nativeBrush,
|
||||
matrix ? matrix->nativeMatrix : NULL));
|
||||
}
|
||||
WrapMode GetWrapMode() const
|
||||
{
|
||||
WrapMode result = WrapModeTile;
|
||||
updateStatus(DllExports::GdipGetPathGradientWrapMode(
|
||||
(GpPathGradient*) nativeBrush, &result));
|
||||
return result;
|
||||
}
|
||||
Status MultiplyTransform(const Matrix *matrix,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipMultiplyPathGradientTransform(
|
||||
(GpPathGradient*) nativeBrush,
|
||||
matrix ? matrix->nativeMatrix : NULL, order));
|
||||
}
|
||||
Status ResetTransform()
|
||||
{
|
||||
return updateStatus(DllExports::GdipResetPathGradientTransform(
|
||||
(GpPathGradient*) nativeBrush));
|
||||
}
|
||||
Status RotateTransform(REAL angle,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipRotatePathGradientTransform(
|
||||
(GpPathGradient*) nativeBrush, angle, order));
|
||||
}
|
||||
Status ScaleTransform(REAL sx, REAL sy,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipScalePathGradientTransform(
|
||||
(GpPathGradient*) nativeBrush, sx, sy, order));
|
||||
}
|
||||
Status SetBlend(REAL *blendFactors, REAL *blendPositions, INT count)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPathGradientBlend(
|
||||
(GpPathGradient*) nativeBrush,
|
||||
blendFactors, blendPositions, count));
|
||||
}
|
||||
Status SetBlendBellShape(REAL focus, REAL scale = 1.0f)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPathGradientSigmaBlend(
|
||||
(GpPathGradient*) nativeBrush, focus, scale));
|
||||
}
|
||||
Status SetBlendTriangularShape(REAL focus, REAL scale = 1.0f)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPathGradientLinearBlend(
|
||||
(GpPathGradient*) nativeBrush, focus, scale));
|
||||
}
|
||||
Status SetCenterColor(const Color& color)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPathGradientCenterColor(
|
||||
(GpPathGradient*) nativeBrush,
|
||||
color.GetValue()));
|
||||
}
|
||||
Status SetCenterPoint(const PointF& point)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPathGradientCenterPoint(
|
||||
(GpPathGradient*) nativeBrush, &point));
|
||||
}
|
||||
Status SetCenterPoint(const Point& point)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPathGradientCenterPointI(
|
||||
(GpPathGradient*) nativeBrush, &point));
|
||||
}
|
||||
Status SetFocusScales(REAL xScale, REAL yScale)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPathGradientFocusScales(
|
||||
(GpPathGradient*) nativeBrush, xScale, yScale));
|
||||
}
|
||||
Status SetGammaCorrection(BOOL useGammaCorrection)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPathGradientGammaCorrection(
|
||||
(GpPathGradient*) nativeBrush,
|
||||
useGammaCorrection));
|
||||
}
|
||||
//Status SetGraphicsPath(const GraphicsPath *path)
|
||||
//{
|
||||
// // TODO: implement PathGradientBrush::SetGraphicsPath
|
||||
// return updateStatus(NotImplemented);
|
||||
//}
|
||||
Status SetInterpolationColors(const Color *presetColors,
|
||||
REAL *blendPositions, INT count)
|
||||
{
|
||||
if (!presetColors || count <= 0)
|
||||
return lastStatus = InvalidParameter;
|
||||
|
||||
ARGB *presetArgb =
|
||||
(ARGB*) DllExports::GdipAlloc(count * sizeof(ARGB));
|
||||
if (!presetArgb)
|
||||
return lastStatus = OutOfMemory;
|
||||
for (INT i = 0; i < count; ++i) {
|
||||
presetArgb[i] = presetColors[i].GetValue();
|
||||
}
|
||||
|
||||
Status status = updateStatus(DllExports::GdipSetPathGradientPresetBlend(
|
||||
(GpPathGradient*) nativeBrush,
|
||||
presetArgb, blendPositions, count));
|
||||
DllExports::GdipFree((void*) presetArgb);
|
||||
return status;
|
||||
}
|
||||
Status SetSurroundColors(const Color *colors, INT *count)
|
||||
{
|
||||
if (!colors || !count || *count <= 0)
|
||||
return lastStatus = InvalidParameter;
|
||||
|
||||
ARGB *colorsArgb =
|
||||
(ARGB*) DllExports::GdipAlloc(*count * sizeof(ARGB));
|
||||
if (!colorsArgb)
|
||||
return lastStatus = OutOfMemory;
|
||||
for (INT i = 0; i < *count; ++i) {
|
||||
colorsArgb[i] = colors[i].GetValue();
|
||||
}
|
||||
|
||||
Status status = updateStatus(DllExports::GdipSetPathGradientSurroundColorsWithCount(
|
||||
(GpPathGradient*) nativeBrush,
|
||||
colorsArgb, count));
|
||||
DllExports::GdipFree((void*) colorsArgb);
|
||||
return status;
|
||||
}
|
||||
Status SetTransform(const Matrix *matrix)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPathGradientTransform(
|
||||
(GpPathGradient*) nativeBrush,
|
||||
matrix ? matrix->nativeMatrix : NULL));
|
||||
}
|
||||
Status SetWrapMode(WrapMode wrapMode)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPathGradientWrapMode(
|
||||
(GpPathGradient*) nativeBrush, wrapMode));
|
||||
}
|
||||
Status TranslateTransform(REAL dx, REAL dy,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipTranslatePathGradientTransform(
|
||||
(GpPathGradient*) nativeBrush, dx, dy, order));
|
||||
}
|
||||
|
||||
private:
|
||||
PathGradientBrush(GpBrush *brush, Status status): Brush(brush, status) {}
|
||||
PathGradientBrush(const PathGradientBrush&);
|
||||
PathGradientBrush& operator=(const PathGradientBrush&);
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /* __GDIPLUS_PATH_H */
|
|
@ -0,0 +1,338 @@
|
|||
/*
|
||||
* gdipluspen.h
|
||||
*
|
||||
* GDI+ Pen class
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_PEN_H
|
||||
#define __GDIPLUS_PEN_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error "A C++ compiler is required to include gdipluspen.h."
|
||||
#endif
|
||||
|
||||
class Pen: public GdiplusBase
|
||||
{
|
||||
friend class Graphics;
|
||||
friend class GraphicsPath;
|
||||
|
||||
public:
|
||||
Pen(const Color& color, REAL width = 1.0f):
|
||||
nativePen(NULL), lastStatus(Ok)
|
||||
{
|
||||
lastStatus = DllExports::GdipCreatePen1(
|
||||
color.GetValue(), width, UnitWorld,
|
||||
&nativePen);
|
||||
}
|
||||
Pen(const Brush *brush, REAL width = 1.0f):
|
||||
nativePen(NULL), lastStatus(Ok)
|
||||
{
|
||||
lastStatus = DllExports::GdipCreatePen2(
|
||||
brush ? brush->nativeBrush : NULL,
|
||||
width, UnitWorld, &nativePen);
|
||||
}
|
||||
~Pen()
|
||||
{
|
||||
DllExports::GdipDeletePen(nativePen);
|
||||
}
|
||||
Pen* Clone() const
|
||||
{
|
||||
GpPen *clonePen = NULL;
|
||||
Status status = updateStatus(DllExports::GdipClonePen(
|
||||
nativePen, &clonePen));
|
||||
if (status == Ok) {
|
||||
Pen *result = new Pen(clonePen, lastStatus);
|
||||
if (!result) {
|
||||
DllExports::GdipDeletePen(clonePen);
|
||||
lastStatus = OutOfMemory;
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
PenAlignment GetAlignment() const
|
||||
{
|
||||
PenAlignment result = PenAlignmentCenter;
|
||||
updateStatus(DllExports::GdipGetPenMode(nativePen, &result));
|
||||
return result;
|
||||
}
|
||||
// TODO: implement Pen::GetBrush()
|
||||
//Brush *GetBrush() const
|
||||
//{
|
||||
// // where is the pen brush allocated (static,member,new,other)?
|
||||
// // GdipGetPenBrushFill just returns a GpBrush*
|
||||
// updateStatus(NotImplemented);
|
||||
// return NULL;
|
||||
//}
|
||||
Status GetColor(Color *color) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPenColor(
|
||||
nativePen, color ? &color->Value : NULL));
|
||||
}
|
||||
Status GetCompoundArray(REAL *compoundArray, INT count) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPenCompoundArray(
|
||||
nativePen, compoundArray, count));
|
||||
}
|
||||
INT GetCompoundArrayCount() const
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipGetPenCompoundCount(
|
||||
nativePen, &result));
|
||||
return result;
|
||||
}
|
||||
Status GetCustomEndCap(CustomLineCap *customCap) const
|
||||
{
|
||||
if (!customCap) return lastStatus = InvalidParameter;
|
||||
// FIXME: do we need to call GdipDeleteCustomLineCap first?
|
||||
return updateStatus(DllExports::GdipGetPenCustomEndCap(
|
||||
nativePen, &customCap->nativeCustomLineCap));
|
||||
}
|
||||
Status GetCustomStartCap(CustomLineCap *customCap) const
|
||||
{
|
||||
if (!customCap) return lastStatus = InvalidParameter;
|
||||
// FIXME: do we need to call GdipDeleteCustomLineCap first?
|
||||
return updateStatus(DllExports::GdipGetPenCustomStartCap(
|
||||
nativePen, &customCap->nativeCustomLineCap));
|
||||
}
|
||||
DashCap GetDashCap() const
|
||||
{
|
||||
DashCap result = DashCapFlat;
|
||||
updateStatus(DllExports::GdipGetPenDashCap197819(
|
||||
nativePen, &result));
|
||||
return result;
|
||||
}
|
||||
REAL GetDashOffset() const
|
||||
{
|
||||
REAL result = 0.0f;
|
||||
updateStatus(DllExports::GdipGetPenDashOffset(
|
||||
nativePen, &result));
|
||||
return result;
|
||||
}
|
||||
Status GetDashPattern(REAL *dashArray, INT count) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPenDashArray(
|
||||
nativePen, dashArray, count));
|
||||
}
|
||||
INT GetDashPatternCount() const
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipGetPenDashCount(
|
||||
nativePen, &result));
|
||||
return result;
|
||||
}
|
||||
DashStyle GetDashStyle() const
|
||||
{
|
||||
DashStyle result = DashStyleSolid;
|
||||
updateStatus(DllExports::GdipGetPenDashStyle(
|
||||
nativePen, &result));
|
||||
return result;
|
||||
}
|
||||
LineCap GetEndCap() const
|
||||
{
|
||||
LineCap result = LineCapFlat;
|
||||
updateStatus(DllExports::GdipGetPenEndCap(nativePen, &result));
|
||||
return result;
|
||||
}
|
||||
Status GetLastStatus() const
|
||||
{
|
||||
Status result = lastStatus;
|
||||
lastStatus = Ok;
|
||||
return result;
|
||||
}
|
||||
LineJoin GetLineJoin() const
|
||||
{
|
||||
LineJoin result = LineJoinMiter;
|
||||
updateStatus(DllExports::GdipGetPenLineJoin(
|
||||
nativePen, &result));
|
||||
return result;
|
||||
}
|
||||
REAL GetMiterLimit() const
|
||||
{
|
||||
REAL result = 10.0f;
|
||||
updateStatus(DllExports::GdipGetPenMiterLimit(
|
||||
nativePen, &result));
|
||||
return result;
|
||||
}
|
||||
PenType GetPenType() const
|
||||
{
|
||||
PenType result = PenTypeUnknown;
|
||||
updateStatus(DllExports::GdipGetPenFillType(
|
||||
nativePen, &result));
|
||||
return result;
|
||||
}
|
||||
LineCap GetStartCap() const
|
||||
{
|
||||
LineCap result = LineCapFlat;
|
||||
updateStatus(DllExports::GdipGetPenStartCap(
|
||||
nativePen, &result));
|
||||
return result;
|
||||
}
|
||||
Status GetTransform(Matrix *matrix) const
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetPenTransform(
|
||||
nativePen,
|
||||
matrix ? matrix->nativeMatrix : NULL));
|
||||
}
|
||||
REAL GetWidth() const
|
||||
{
|
||||
REAL result = 1.0f;
|
||||
updateStatus(DllExports::GdipGetPenWidth(nativePen, &result));
|
||||
return result;
|
||||
}
|
||||
Status MultiplyTransform(const Matrix *matrix,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipMultiplyPenTransform(
|
||||
nativePen,
|
||||
matrix ? matrix->nativeMatrix : NULL, order));
|
||||
}
|
||||
Status ResetTransform()
|
||||
{
|
||||
return updateStatus(DllExports::GdipResetPenTransform(
|
||||
nativePen));
|
||||
}
|
||||
Status RotateTransform(REAL angle,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipRotatePenTransform(
|
||||
nativePen, angle, order));
|
||||
}
|
||||
Status ScaleTransform(REAL sx, REAL sy,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipScalePenTransform(
|
||||
nativePen, sx, sy, order));
|
||||
}
|
||||
Status SetAlignment(PenAlignment penAlignment)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPenMode(
|
||||
nativePen, penAlignment));
|
||||
}
|
||||
Status SetBrush(const Brush *brush)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPenBrushFill(
|
||||
nativePen, brush ? brush->nativeBrush : NULL));
|
||||
}
|
||||
Status SetColor(const Color& color)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPenColor(
|
||||
nativePen, color.GetValue()));
|
||||
}
|
||||
Status SetCompoundArray(const REAL *compoundArray, INT count)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPenCompoundArray(
|
||||
nativePen, compoundArray, count));
|
||||
}
|
||||
Status SetCustomEndCap(const CustomLineCap *customCap)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPenCustomEndCap(
|
||||
nativePen,
|
||||
customCap ? customCap->nativeCustomLineCap : NULL));
|
||||
}
|
||||
Status SetCustomStartCap(const CustomLineCap *customCap)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPenCustomStartCap(
|
||||
nativePen,
|
||||
customCap ? customCap->nativeCustomLineCap : NULL));
|
||||
}
|
||||
Status SetDashCap(DashCap dashCap)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPenDashCap197819(
|
||||
nativePen, dashCap));
|
||||
}
|
||||
Status SetDashOffset(REAL dashOffset)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPenDashOffset(
|
||||
nativePen, dashOffset));
|
||||
}
|
||||
Status SetDashPattern(const REAL *dashArray, INT count)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPenDashArray(
|
||||
nativePen, dashArray, count));
|
||||
}
|
||||
Status SetDashStyle(DashStyle dashStyle)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPenDashStyle(
|
||||
nativePen, dashStyle));
|
||||
}
|
||||
Status SetEndCap(LineCap endCap)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPenEndCap(
|
||||
nativePen, endCap));
|
||||
}
|
||||
Status SetLineCap(LineCap startCap, LineCap endCap, DashCap dashCap)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPenLineCap197819(
|
||||
nativePen, startCap, endCap, dashCap));
|
||||
}
|
||||
Status SetLineJoin(LineJoin lineJoin)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPenLineJoin(
|
||||
nativePen, lineJoin));
|
||||
}
|
||||
Status SetMiterLimit(REAL miterLimit)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPenMiterLimit(
|
||||
nativePen, miterLimit));
|
||||
}
|
||||
Status SetStartCap(LineCap startCap)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPenStartCap(
|
||||
nativePen, startCap));
|
||||
}
|
||||
Status SetTransform(const Matrix *matrix)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPenTransform(
|
||||
nativePen,
|
||||
matrix ? matrix->nativeMatrix : NULL));
|
||||
}
|
||||
Status SetWidth(REAL width)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetPenWidth(
|
||||
nativePen, width));
|
||||
}
|
||||
Status TranslateTransform(REAL dx, REAL dy,
|
||||
MatrixOrder order = MatrixOrderPrepend)
|
||||
{
|
||||
return updateStatus(DllExports::GdipTranslatePenTransform(
|
||||
nativePen, dx, dy, order));
|
||||
}
|
||||
|
||||
private:
|
||||
Pen(GpPen *pen, Status status): nativePen(pen), lastStatus(status) {}
|
||||
Pen(const Pen& pen);
|
||||
Pen& operator=(const Pen&);
|
||||
|
||||
Status updateStatus(Status newStatus) const
|
||||
{
|
||||
if (newStatus != Ok) lastStatus = newStatus;
|
||||
return newStatus;
|
||||
}
|
||||
|
||||
GpPen *nativePen;
|
||||
mutable Status lastStatus;
|
||||
};
|
||||
|
||||
#endif /* __GDIPLUS_PEN_H */
|
|
@ -0,0 +1,120 @@
|
|||
/*
|
||||
* gdipluspixelformats.h
|
||||
*
|
||||
* GDI+ pixel formats
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_PIXELFORMATS_H
|
||||
#define __GDIPLUS_PIXELFORMATS_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
typedef DWORD ARGB;
|
||||
typedef INT PixelFormat;
|
||||
|
||||
#define PixelFormatIndexed ((PixelFormat) 0x00010000)
|
||||
#define PixelFormatGDI ((PixelFormat) 0x00020000)
|
||||
#define PixelFormatAlpha ((PixelFormat) 0x00040000)
|
||||
#define PixelFormatPAlpha ((PixelFormat) 0x00080000)
|
||||
#define PixelFormatExtended ((PixelFormat) 0x00100000)
|
||||
#define PixelFormatCanonical ((PixelFormat) 0x00200000)
|
||||
#define PixelFormatUndefined ((PixelFormat) 0)
|
||||
#define PixelFormatDontCare ((PixelFormat) 0)
|
||||
#define PixelFormat1bppIndexed ((PixelFormat) \
|
||||
(1 | (1<<8) | PixelFormatIndexed | PixelFormatGDI))
|
||||
#define PixelFormat4bppIndexed ((PixelFormat) \
|
||||
(2 | (4<<8) | PixelFormatIndexed | PixelFormatGDI))
|
||||
#define PixelFormat8bppIndexed ((PixelFormat) \
|
||||
(3 | (8<<8) | PixelFormatIndexed | PixelFormatGDI))
|
||||
#define PixelFormat16bppGrayScale ((PixelFormat) \
|
||||
(4 | (16<<8) | PixelFormatExtended))
|
||||
#define PixelFormat16bppRGB555 ((PixelFormat) \
|
||||
(5 | (16<<8) | PixelFormatGDI))
|
||||
#define PixelFormat16bppRGB565 ((PixelFormat) \
|
||||
(6 | (16<<8) | PixelFormatGDI))
|
||||
#define PixelFormat16bppARGB1555 ((PixelFormat) \
|
||||
(7 | (16<<8) | PixelFormatAlpha | PixelFormatGDI))
|
||||
#define PixelFormat24bppRGB ((PixelFormat) \
|
||||
(8 | (24<<8) | PixelFormatGDI))
|
||||
#define PixelFormat32bppRGB ((PixelFormat) \
|
||||
(9 | (32<<8) | PixelFormatGDI))
|
||||
#define PixelFormat32bppARGB ((PixelFormat) \
|
||||
(10 | (32<<8) | PixelFormatAlpha | PixelFormatGDI | PixelFormatCanonical))
|
||||
#define PixelFormat32bppPARGB ((PixelFormat) \
|
||||
(11 | (32<<8) | PixelFormatAlpha | PixelFormatPAlpha | PixelFormatGDI))
|
||||
#define PixelFormat48bppRGB ((PixelFormat) \
|
||||
(12 | (48<<8) | PixelFormatExtended))
|
||||
#define PixelFormat64bppARGB ((PixelFormat) \
|
||||
(13 | (64<<8) | PixelFormatAlpha | PixelFormatCanonical | PixelFormatExtended))
|
||||
#define PixelFormat64bppPARGB ((PixelFormat) \
|
||||
(14 | (64<<8) | PixelFormatAlpha | PixelFormatPAlpha | PixelFormatExtended))
|
||||
#define PixelFormatMax ((PixelFormat) 15)
|
||||
|
||||
typedef enum PaletteFlags {
|
||||
PaletteFlagsHasAlpha = 1,
|
||||
PaletteFlagsGrayScale = 2,
|
||||
PaletteFlagsHalftone = 4
|
||||
} PaletteFlags;
|
||||
|
||||
typedef enum PaletteType {
|
||||
PaletteTypeCustom = 0,
|
||||
PaletteTypeOptimal = 1,
|
||||
PaletteTypeFixedBW = 2,
|
||||
PaletteTypeFixedHalftone8 = 3,
|
||||
PaletteTypeFixedHalftone27 = 4,
|
||||
PaletteTypeFixedHalftone64 = 5,
|
||||
PaletteTypeFixedHalftone125 = 6,
|
||||
PaletteTypeFixedHalftone216 = 7,
|
||||
PaletteTypeFixedHalftone252 = 8,
|
||||
PaletteTypeFixedHalftone256 = 9
|
||||
} PaletteType;
|
||||
|
||||
typedef struct ColorPalette {
|
||||
UINT Flags;
|
||||
UINT Count;
|
||||
ARGB Entries[1];
|
||||
} ColorPalette;
|
||||
|
||||
static __inline__ UINT GetPixelFormatSize(PixelFormat pixfmt)
|
||||
{
|
||||
return (((UINT) pixfmt) & 0xff00U) >> 8;
|
||||
}
|
||||
|
||||
static __inline__ BOOL IsAlphaPixelFormat(PixelFormat pixfmt)
|
||||
{
|
||||
return (pixfmt & PixelFormatAlpha) != 0;
|
||||
}
|
||||
|
||||
static __inline__ BOOL IsCanonicalPixelFormat(PixelFormat pixfmt)
|
||||
{
|
||||
return (pixfmt & PixelFormatCanonical) != 0;
|
||||
}
|
||||
|
||||
static __inline__ BOOL IsExtendedPixelFormat(PixelFormat pixfmt)
|
||||
{
|
||||
return (pixfmt & PixelFormatExtended) != 0;
|
||||
}
|
||||
|
||||
static __inline__ BOOL IsIndexedPixelFormat(PixelFormat pixfmt)
|
||||
{
|
||||
return (pixfmt & PixelFormatIndexed) != 0;
|
||||
}
|
||||
|
||||
#endif /* __GDIPLUS_PIXELFORMATS_H */
|
|
@ -0,0 +1,251 @@
|
|||
/*
|
||||
* gdiplusstringformat.h
|
||||
*
|
||||
* GDI+ StringFormat class
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_STRINGFORMAT_H
|
||||
#define __GDIPLUS_STRINGFORMAT_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error "A C++ compiler is required to include gdiplusstringformat.h."
|
||||
#endif
|
||||
|
||||
class StringFormat: public GdiplusBase
|
||||
{
|
||||
friend class Graphics;
|
||||
friend class GraphicsPath;
|
||||
|
||||
public:
|
||||
static const StringFormat* GenericDefault();
|
||||
static const StringFormat* GenericTypographic();
|
||||
|
||||
StringFormat(INT formatFlags = 0, LANGID language = LANG_NEUTRAL):
|
||||
nativeStringFormat(NULL), lastStatus(Ok)
|
||||
{
|
||||
lastStatus = DllExports::GdipCreateStringFormat(
|
||||
formatFlags, language, &nativeStringFormat);
|
||||
}
|
||||
StringFormat(const StringFormat *format):
|
||||
nativeStringFormat(NULL), lastStatus(Ok)
|
||||
{
|
||||
lastStatus = DllExports::GdipCloneStringFormat(
|
||||
format ? format->nativeStringFormat : NULL,
|
||||
&nativeStringFormat);
|
||||
}
|
||||
~StringFormat()
|
||||
{
|
||||
DllExports::GdipDeleteStringFormat(nativeStringFormat);
|
||||
}
|
||||
StringFormat* Clone() const
|
||||
{
|
||||
GpStringFormat *cloneStringFormat = NULL;
|
||||
Status status = updateStatus(DllExports::GdipCloneStringFormat(
|
||||
nativeStringFormat, &cloneStringFormat));
|
||||
if (status == Ok) {
|
||||
StringFormat *result = new StringFormat(
|
||||
cloneStringFormat, lastStatus);
|
||||
if (!result) {
|
||||
DllExports::GdipDeleteStringFormat(cloneStringFormat);
|
||||
lastStatus = OutOfMemory;
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
StringAlignment GetAlignment() const
|
||||
{
|
||||
StringAlignment result = StringAlignmentNear;
|
||||
updateStatus(DllExports::GdipGetStringFormatAlign(
|
||||
nativeStringFormat, &result));
|
||||
return result;
|
||||
}
|
||||
LANGID GetDigitSubstitutionLanguage() const
|
||||
{
|
||||
LANGID result = 0;
|
||||
StringDigitSubstitute method;
|
||||
updateStatus(DllExports::GdipGetStringFormatDigitSubstitution(
|
||||
nativeStringFormat, &result, &method));
|
||||
return result;
|
||||
}
|
||||
StringDigitSubstitute GetDigitSubstitutionMethod() const
|
||||
{
|
||||
LANGID language;
|
||||
StringDigitSubstitute result = StringDigitSubstituteUser;
|
||||
updateStatus(DllExports::GdipGetStringFormatDigitSubstitution(
|
||||
nativeStringFormat, &language, &result));
|
||||
return result;
|
||||
}
|
||||
INT GetFormatFlags() const
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipGetStringFormatFlags(
|
||||
nativeStringFormat, &result));
|
||||
return result;
|
||||
}
|
||||
HotkeyPrefix GetHotkeyPrefix() const
|
||||
{
|
||||
HotkeyPrefix result = HotkeyPrefixNone;
|
||||
updateStatus(DllExports::GdipGetStringFormatHotkeyPrefix(
|
||||
nativeStringFormat, (INT*) &result));
|
||||
return result;
|
||||
}
|
||||
Status GetLastStatus() const
|
||||
{
|
||||
Status result = lastStatus;
|
||||
lastStatus = Ok;
|
||||
return result;
|
||||
}
|
||||
StringAlignment GetLineAlignment() const
|
||||
{
|
||||
StringAlignment result = StringAlignmentNear;
|
||||
updateStatus(DllExports::GdipGetStringFormatLineAlign(
|
||||
nativeStringFormat, &result));
|
||||
return result;
|
||||
}
|
||||
INT GetMeasurableCharacterRangeCount() const
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipGetStringFormatMeasurableCharacterRangeCount(
|
||||
nativeStringFormat, &result));
|
||||
return result;
|
||||
}
|
||||
INT GetTabStopCount() const
|
||||
{
|
||||
INT result = 0;
|
||||
updateStatus(DllExports::GdipGetStringFormatTabStopCount(
|
||||
nativeStringFormat, &result));
|
||||
return result;
|
||||
}
|
||||
Status GetTabStops(INT count, REAL *firstTabOffset, REAL *tabStops)
|
||||
{
|
||||
return updateStatus(DllExports::GdipGetStringFormatTabStops(
|
||||
nativeStringFormat, count,
|
||||
firstTabOffset, tabStops));
|
||||
}
|
||||
StringTrimming GetTrimming() const
|
||||
{
|
||||
StringTrimming result = StringTrimmingNone;
|
||||
updateStatus(DllExports::GdipGetStringFormatTrimming(
|
||||
nativeStringFormat, &result));
|
||||
return result;
|
||||
}
|
||||
Status SetAlignment(StringAlignment align)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetStringFormatAlign(
|
||||
nativeStringFormat, align));
|
||||
}
|
||||
Status SetDigitSubstitution(LANGID language,
|
||||
StringDigitSubstitute substitute)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetStringFormatDigitSubstitution(
|
||||
nativeStringFormat, language, substitute));
|
||||
}
|
||||
Status SetFormatFlags(INT flags)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetStringFormatFlags(
|
||||
nativeStringFormat, flags));
|
||||
}
|
||||
Status SetHotkeyPrefix(HotkeyPrefix hotkeyPrefix)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetStringFormatHotkeyPrefix(
|
||||
nativeStringFormat, (INT) hotkeyPrefix));
|
||||
}
|
||||
Status SetLineAlignment(StringAlignment align)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetStringFormatLineAlign(
|
||||
nativeStringFormat, align));
|
||||
}
|
||||
Status SetMeasurableCharacterRanges(INT rangeCount,
|
||||
const CharacterRange *ranges)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetStringFormatMeasurableCharacterRanges(
|
||||
nativeStringFormat, rangeCount, ranges));
|
||||
}
|
||||
Status SetTabStops(REAL firstTabOffset, INT count, const REAL *tabStops)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetStringFormatTabStops(
|
||||
nativeStringFormat, firstTabOffset,
|
||||
count, tabStops));
|
||||
}
|
||||
Status SetTrimming(StringTrimming trimming)
|
||||
{
|
||||
return updateStatus(DllExports::GdipSetStringFormatTrimming(
|
||||
nativeStringFormat, trimming));
|
||||
}
|
||||
|
||||
private:
|
||||
StringFormat(GpStringFormat *stringFormat, Status status):
|
||||
nativeStringFormat(stringFormat), lastStatus(status) {}
|
||||
StringFormat(const StringFormat&);
|
||||
StringFormat& operator=(const StringFormat&);
|
||||
|
||||
Status updateStatus(Status newStatus) const
|
||||
{
|
||||
if (newStatus != Ok) lastStatus = newStatus;
|
||||
return newStatus;
|
||||
}
|
||||
|
||||
GpStringFormat *nativeStringFormat;
|
||||
mutable Status lastStatus;
|
||||
};
|
||||
|
||||
|
||||
// FIXME: do StringFormat::GenericDefault() et al. need to be thread safe?
|
||||
// FIXME: maybe put this in gdiplus.c?
|
||||
|
||||
extern "C" void *_GdipStringFormatCachedGenericDefault;
|
||||
extern "C" void *_GdipStringFormatCachedGenericTypographic;
|
||||
|
||||
__inline__ const StringFormat* StringFormat::GenericDefault()
|
||||
{
|
||||
if (!_GdipStringFormatCachedGenericDefault) {
|
||||
GpStringFormat *nativeStringFormat = 0;
|
||||
Status status = DllExports::GdipStringFormatGetGenericDefault(
|
||||
&nativeStringFormat);
|
||||
if (status == Ok && nativeStringFormat) {
|
||||
_GdipStringFormatCachedGenericDefault = (void*)
|
||||
new StringFormat(nativeStringFormat, Ok);
|
||||
}
|
||||
}
|
||||
return (StringFormat*) _GdipStringFormatCachedGenericDefault;
|
||||
}
|
||||
|
||||
__inline__ const StringFormat* StringFormat::GenericTypographic()
|
||||
{
|
||||
if (!_GdipStringFormatCachedGenericTypographic) {
|
||||
GpStringFormat *nativeStringFormat = 0;
|
||||
Status status = DllExports::GdipStringFormatGetGenericTypographic(
|
||||
&nativeStringFormat);
|
||||
if (status == Ok && nativeStringFormat) {
|
||||
_GdipStringFormatCachedGenericTypographic = (void*)
|
||||
new StringFormat(nativeStringFormat, Ok);
|
||||
}
|
||||
}
|
||||
return (StringFormat*) _GdipStringFormatCachedGenericTypographic;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif /* __GDIPLUS_STRINGFORMAT_H */
|
|
@ -0,0 +1,456 @@
|
|||
/*
|
||||
* gdiplustypes.h
|
||||
*
|
||||
* GDI+ basic type declarations
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Markus Koenig <markus@stber-koenig.de>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __GDIPLUS_TYPES_H
|
||||
#define __GDIPLUS_TYPES_H
|
||||
#if __GNUC__ >=3
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#define WINGDIPAPI __stdcall
|
||||
#define GDIPCONST const
|
||||
|
||||
typedef enum GpStatus {
|
||||
Ok = 0,
|
||||
GenericError = 1,
|
||||
InvalidParameter = 2,
|
||||
OutOfMemory = 3,
|
||||
ObjectBusy = 4,
|
||||
InsufficientBuffer = 5,
|
||||
NotImplemented = 6,
|
||||
Win32Error = 7,
|
||||
WrongState = 8,
|
||||
Aborted = 9,
|
||||
FileNotFound = 10,
|
||||
ValueOverflow = 11,
|
||||
AccessDenied = 12,
|
||||
UnknownImageFormat = 13,
|
||||
FontFamilyNotFound = 14,
|
||||
FontStyleNotFound = 15,
|
||||
NotTrueTypeFont = 16,
|
||||
UnsupportedGdiplusVersion = 17,
|
||||
GdiplusNotInitialized = 18,
|
||||
PropertyNotFound = 19,
|
||||
PropertyNotSupported = 20,
|
||||
ProfileNotFound = 21
|
||||
} GpStatus;
|
||||
|
||||
#ifdef __cplusplus
|
||||
typedef GpStatus Status;
|
||||
#endif
|
||||
|
||||
typedef struct Size {
|
||||
INT Width;
|
||||
INT Height;
|
||||
|
||||
#ifdef __cplusplus
|
||||
Size(): Width(0), Height(0) {}
|
||||
Size(INT width, INT height): Width(width), Height(height) {}
|
||||
Size(const Size& size): Width(size.Width), Height(size.Height) {}
|
||||
|
||||
BOOL Empty() const {
|
||||
return Width == 0 && Height == 0;
|
||||
}
|
||||
BOOL Equals(const Size& size) const {
|
||||
return Width == size.Width && Height == size.Height;
|
||||
}
|
||||
Size operator+(const Size& size) const {
|
||||
return Size(Width + size.Width, Height + size.Height);
|
||||
}
|
||||
Size operator-(const Size& size) const {
|
||||
return Size(Width - size.Width, Height - size.Height);
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
} Size;
|
||||
|
||||
typedef struct SizeF {
|
||||
REAL Width;
|
||||
REAL Height;
|
||||
|
||||
#ifdef __cplusplus
|
||||
SizeF(): Width(0.0f), Height(0.0f) {}
|
||||
SizeF(REAL width, REAL height): Width(width), Height(height) {}
|
||||
SizeF(const SizeF& size): Width(size.Width), Height(size.Height) {}
|
||||
|
||||
BOOL Empty() const {
|
||||
return Width == 0.0f && Height == 0.0f;
|
||||
}
|
||||
BOOL Equals(const SizeF& size) const {
|
||||
return Width == size.Width && Height == size.Height;
|
||||
}
|
||||
SizeF operator+(const SizeF& size) const {
|
||||
return SizeF(Width + size.Width, Height + size.Height);
|
||||
}
|
||||
SizeF operator-(const SizeF& size) const {
|
||||
return SizeF(Width - size.Width, Height - size.Height);
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
} SizeF;
|
||||
|
||||
typedef struct Point {
|
||||
INT X;
|
||||
INT Y;
|
||||
|
||||
#ifdef __cplusplus
|
||||
Point(): X(0), Y(0) {}
|
||||
Point(INT x, INT y): X(x), Y(y) {}
|
||||
Point(const Point& point): X(point.X), Y(point.Y) {}
|
||||
Point(const Size& size): X(size.Width), Y(size.Height) {}
|
||||
|
||||
BOOL Equals(const Point& point) const {
|
||||
return X == point.X && Y == point.Y;
|
||||
}
|
||||
Point operator+(const Point& point) const {
|
||||
return Point(X + point.X, Y + point.Y);
|
||||
}
|
||||
Point operator-(const Point& point) const {
|
||||
return Point(X - point.X, Y - point.Y);
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
} Point;
|
||||
|
||||
typedef struct PointF {
|
||||
REAL X;
|
||||
REAL Y;
|
||||
|
||||
#ifdef __cplusplus
|
||||
PointF(): X(0.0f), Y(0.0f) {}
|
||||
PointF(REAL x, REAL y): X(x), Y(y) {}
|
||||
PointF(const PointF& point): X(point.X), Y(point.Y) {}
|
||||
PointF(const SizeF& size): X(size.Width), Y(size.Height) {}
|
||||
|
||||
BOOL Equals(const PointF& point) const {
|
||||
return X == point.X && Y == point.Y;
|
||||
}
|
||||
PointF operator+(const PointF& point) const {
|
||||
return PointF(X + point.X, Y + point.Y);
|
||||
}
|
||||
PointF operator-(const PointF& point) const {
|
||||
return PointF(X - point.X, Y - point.Y);
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
} PointF;
|
||||
|
||||
typedef struct Rect {
|
||||
INT X;
|
||||
INT Y;
|
||||
INT Width;
|
||||
INT Height;
|
||||
|
||||
#ifdef __cplusplus
|
||||
Rect(): X(0), Y(0), Width(0), Height(0) {}
|
||||
Rect(const Point& location, const Size& size):
|
||||
X(location.X), Y(location.Y),
|
||||
Width(size.Width), Height(size.Height) {}
|
||||
Rect(INT x, INT y, INT width, INT height):
|
||||
X(x), Y(y), Width(width), Height(height) {}
|
||||
|
||||
Rect* Clone() const {
|
||||
return new Rect(X, Y, Width, Height);
|
||||
}
|
||||
BOOL Contains(INT x, INT y) const {
|
||||
return X <= x && Y <= y && x < X+Width && y < Y+Height;
|
||||
}
|
||||
BOOL Contains(const Point& point) const {
|
||||
return Contains(point.X, point.Y);
|
||||
}
|
||||
BOOL Contains(const Rect& rect) const {
|
||||
return X <= rect.X && Y <= rect.Y
|
||||
&& rect.X+rect.Width <= X+Width
|
||||
&& rect.Y+rect.Height <= Y+Height;
|
||||
}
|
||||
BOOL Equals(const Rect& rect) const {
|
||||
return X == rect.X && Y == rect.Y
|
||||
&& Width == rect.Width && Height == rect.Height;
|
||||
}
|
||||
INT GetBottom() const {
|
||||
return Y+Height;
|
||||
}
|
||||
VOID GetBounds(Rect *rect) const {
|
||||
if (rect != NULL) {
|
||||
rect->X = X;
|
||||
rect->Y = Y;
|
||||
rect->Width = Width;
|
||||
rect->Height = Height;
|
||||
}
|
||||
}
|
||||
INT GetLeft() const {
|
||||
return X;
|
||||
}
|
||||
VOID GetLocation(Point *point) const {
|
||||
if (point != NULL) {
|
||||
point->X = X;
|
||||
point->Y = Y;
|
||||
}
|
||||
}
|
||||
INT GetRight() const {
|
||||
return X+Width;
|
||||
}
|
||||
VOID GetSize(Size *size) const {
|
||||
if (size != NULL) {
|
||||
size->Width = Width;
|
||||
size->Height = Height;
|
||||
}
|
||||
}
|
||||
INT GetTop() const {
|
||||
return Y;
|
||||
}
|
||||
BOOL IsEmptyArea() const {
|
||||
return Width <= 0 || Height <= 0;
|
||||
}
|
||||
VOID Inflate(INT dx, INT dy) {
|
||||
X -= dx;
|
||||
Y -= dy;
|
||||
Width += 2*dx;
|
||||
Height += 2*dy;
|
||||
}
|
||||
VOID Inflate(const Point& point) {
|
||||
Inflate(point.X, point.Y);
|
||||
}
|
||||
static BOOL Intersect(Rect& c, const Rect& a, const Rect& b) {
|
||||
INT intersectLeft = (a.X < b.X) ? b.X : a.X;
|
||||
INT intersectTop = (a.Y < b.Y) ? b.Y : a.Y;
|
||||
INT intersectRight = (a.GetRight() < b.GetRight())
|
||||
? a.GetRight() : b.GetRight();
|
||||
INT intersectBottom = (a.GetBottom() < b.GetBottom())
|
||||
? a.GetBottom() : b.GetBottom();
|
||||
c.X = intersectLeft;
|
||||
c.Y = intersectTop;
|
||||
c.Width = intersectRight - intersectLeft;
|
||||
c.Height = intersectBottom - intersectTop;
|
||||
return !c.IsEmptyArea();
|
||||
}
|
||||
BOOL Intersect(const Rect& rect) {
|
||||
return Intersect(*this, *this, rect);
|
||||
}
|
||||
BOOL IntersectsWith(const Rect& rc) const {
|
||||
INT intersectLeft = (X < rc.X) ? rc.X : X;
|
||||
INT intersectTop = (Y < rc.Y) ? rc.Y : Y;
|
||||
INT intersectRight = (GetRight() < rc.GetRight())
|
||||
? GetRight() : rc.GetRight();
|
||||
INT intersectBottom = (GetBottom() < rc.GetBottom())
|
||||
? GetBottom() : rc.GetBottom();
|
||||
return intersectLeft < intersectRight
|
||||
&& intersectTop < intersectBottom;
|
||||
}
|
||||
VOID Offset(INT dx, INT dy) {
|
||||
X += dx;
|
||||
Y += dy;
|
||||
}
|
||||
VOID Offset(const Point& point) {
|
||||
Offset(point.X, point.Y);
|
||||
}
|
||||
static BOOL Union(Rect& c, const Rect& a, const Rect& b) {
|
||||
INT unionLeft = (a.X < b.X) ? a.X : b.X;
|
||||
INT unionTop = (a.Y < b.Y) ? a.Y : b.Y;
|
||||
INT unionRight = (a.GetRight() < b.GetRight())
|
||||
? b.GetRight() : a.GetRight();
|
||||
INT unionBottom = (a.GetBottom() < b.GetBottom())
|
||||
? b.GetBottom() : a.GetBottom();
|
||||
c.X = unionLeft;
|
||||
c.Y = unionTop;
|
||||
c.Width = unionRight - unionLeft;
|
||||
c.Height = unionBottom - unionTop;
|
||||
return !c.IsEmptyArea();
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
} Rect;
|
||||
|
||||
typedef struct RectF {
|
||||
REAL X;
|
||||
REAL Y;
|
||||
REAL Width;
|
||||
REAL Height;
|
||||
|
||||
#ifdef __cplusplus
|
||||
RectF(): X(0.0f), Y(0.0f), Width(0.0f), Height(0.0f) {}
|
||||
RectF(const PointF& location, const SizeF& size):
|
||||
X(location.X), Y(location.Y),
|
||||
Width(size.Width), Height(size.Height) {}
|
||||
RectF(REAL x, REAL y, REAL width, REAL height):
|
||||
X(x), Y(y), Width(width), Height(height) {}
|
||||
|
||||
RectF* Clone() const {
|
||||
return new RectF(X, Y, Width, Height);
|
||||
}
|
||||
BOOL Contains(REAL x, REAL y) const {
|
||||
return X <= x && Y <= y && x < X+Width && y < Y+Height;
|
||||
}
|
||||
BOOL Contains(const PointF& point) const {
|
||||
return Contains(point.X, point.Y);
|
||||
}
|
||||
BOOL Contains(const RectF& rect) const {
|
||||
return X <= rect.X && Y <= rect.Y
|
||||
&& rect.X+rect.Width <= X+Width
|
||||
&& rect.Y+rect.Height <= Y+Height;
|
||||
}
|
||||
BOOL Equals(const RectF& rect) const {
|
||||
return X == rect.X && Y == rect.Y
|
||||
&& Width == rect.Width && Height == rect.Height;
|
||||
}
|
||||
REAL GetBottom() const {
|
||||
return Y+Height;
|
||||
}
|
||||
VOID GetBounds(RectF *rect) const {
|
||||
if (rect != NULL) {
|
||||
rect->X = X;
|
||||
rect->Y = Y;
|
||||
rect->Width = Width;
|
||||
rect->Height = Height;
|
||||
}
|
||||
}
|
||||
REAL GetLeft() const {
|
||||
return X;
|
||||
}
|
||||
VOID GetLocation(PointF *point) const {
|
||||
if (point != NULL) {
|
||||
point->X = X;
|
||||
point->Y = Y;
|
||||
}
|
||||
}
|
||||
REAL GetRight() const {
|
||||
return X+Width;
|
||||
}
|
||||
VOID GetSize(SizeF *size) const {
|
||||
if (size != NULL) {
|
||||
size->Width = Width;
|
||||
size->Height = Height;
|
||||
}
|
||||
}
|
||||
REAL GetTop() const {
|
||||
return Y;
|
||||
}
|
||||
BOOL IsEmptyArea() const {
|
||||
return Width <= 0.0f || Height <= 0.0f;
|
||||
}
|
||||
VOID Inflate(REAL dx, REAL dy) {
|
||||
X -= dx;
|
||||
Y -= dy;
|
||||
Width += 2*dx;
|
||||
Height += 2*dy;
|
||||
}
|
||||
VOID Inflate(const PointF& point) {
|
||||
Inflate(point.X, point.Y);
|
||||
}
|
||||
static BOOL Intersect(RectF& c, const RectF& a, const RectF& b) {
|
||||
INT intersectLeft = (a.X < b.X) ? b.X : a.X;
|
||||
INT intersectTop = (a.Y < b.Y) ? b.Y : a.Y;
|
||||
INT intersectRight = (a.GetRight() < b.GetRight())
|
||||
? a.GetRight() : b.GetRight();
|
||||
INT intersectBottom = (a.GetBottom() < b.GetBottom())
|
||||
? a.GetBottom() : b.GetBottom();
|
||||
c.X = intersectLeft;
|
||||
c.Y = intersectTop;
|
||||
c.Width = intersectRight - intersectLeft;
|
||||
c.Height = intersectBottom - intersectTop;
|
||||
return !c.IsEmptyArea();
|
||||
}
|
||||
BOOL Intersect(const RectF& rect) {
|
||||
return Intersect(*this, *this, rect);
|
||||
}
|
||||
BOOL IntersectsWith(const RectF& rc) const {
|
||||
INT intersectLeft = (X < rc.X) ? rc.X : X;
|
||||
INT intersectTop = (Y < rc.Y) ? rc.Y : Y;
|
||||
INT intersectRight = (GetRight() < rc.GetRight())
|
||||
? GetRight() : rc.GetRight();
|
||||
INT intersectBottom = (GetBottom() < rc.GetBottom())
|
||||
? GetBottom() : rc.GetBottom();
|
||||
return intersectLeft < intersectRight
|
||||
&& intersectTop < intersectBottom;
|
||||
}
|
||||
VOID Offset(REAL dx, REAL dy) {
|
||||
X += dx;
|
||||
Y += dy;
|
||||
}
|
||||
VOID Offset(const PointF& point) {
|
||||
Offset(point.X, point.Y);
|
||||
}
|
||||
static BOOL Union(RectF& c, const RectF& a, const RectF& b) {
|
||||
INT unionLeft = (a.X < b.X) ? a.X : b.X;
|
||||
INT unionTop = (a.Y < b.Y) ? a.Y : b.Y;
|
||||
INT unionRight = (a.GetRight() < b.GetRight())
|
||||
? b.GetRight() : a.GetRight();
|
||||
INT unionBottom = (a.GetBottom() < b.GetBottom())
|
||||
? b.GetBottom() : a.GetBottom();
|
||||
c.X = unionLeft;
|
||||
c.Y = unionTop;
|
||||
c.Width = unionRight - unionLeft;
|
||||
c.Height = unionBottom - unionTop;
|
||||
return !c.IsEmptyArea();
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
} RectF;
|
||||
|
||||
/* FIXME: Are descendants of this class, when compiled with g++,
|
||||
binary compatible with MSVC++ code (especially GDIPLUS.DLL of course)? */
|
||||
#ifdef __cplusplus
|
||||
struct GdiplusAbort {
|
||||
virtual HRESULT __stdcall Abort(void) {}
|
||||
};
|
||||
#else
|
||||
typedef struct GdiplusAbort GdiplusAbort; /* incomplete type */
|
||||
#endif
|
||||
|
||||
typedef struct CharacterRange {
|
||||
INT First;
|
||||
INT Length;
|
||||
|
||||
#ifdef __cplusplus
|
||||
CharacterRange(): First(0), Length(0) {}
|
||||
CharacterRange(INT first, INT length): First(first), Length(length) {}
|
||||
CharacterRange& operator=(const CharacterRange& rhs) {
|
||||
/* This gracefully handles self-assignment */
|
||||
First = rhs.First;
|
||||
Length = rhs.Length;
|
||||
return *this;
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
} CharacterRange;
|
||||
|
||||
typedef struct PathData {
|
||||
INT Count;
|
||||
PointF *Points;
|
||||
BYTE *Types;
|
||||
|
||||
#ifdef __cplusplus
|
||||
friend class GraphicsPath;
|
||||
|
||||
PathData(): Count(0), Points(NULL), Types(NULL) {}
|
||||
~PathData() {
|
||||
FreeArrays();
|
||||
}
|
||||
private:
|
||||
/* used by GraphicsPath::GetPathData, defined in gdipluspath.h */
|
||||
Status AllocateArrays(INT capacity);
|
||||
VOID FreeArrays();
|
||||
#endif /* __cplusplus */
|
||||
} PathData;
|
||||
|
||||
/* Callback function types */
|
||||
/* FIXME: need a correct definition for these function pointer types */
|
||||
typedef void *DebugEventProc;
|
||||
typedef BOOL CALLBACK (*EnumerateMetafileProc)(EmfPlusRecordType,UINT,UINT,const BYTE*,VOID*);
|
||||
typedef void *DrawImageAbort;
|
||||
typedef void *GetThumbnailImageAbort;
|
||||
|
||||
|
||||
#endif /* __GDIPLUS_TYPES_H */
|
|
@ -112,6 +112,7 @@ FLAGS_TO_PASS = \
|
|||
|
||||
HEADERS = $(notdir $(wildcard $(srcdir)/../include/*.h))
|
||||
GL_HEADERS = $(notdir $(wildcard $(srcdir)/../include/GL/*.h))
|
||||
GDIPLUS_HEADERS = $(notdir $(wildcard $(srcdir)/../include/gdiplus/*.h))
|
||||
|
||||
# libraries
|
||||
|
||||
|
@ -127,7 +128,7 @@ UUID_OBJS = mshtml-uuid.o msxml-uuid.o unknwn-uuid.o \
|
|||
exdisp-uuid.o mlang-uuid.o objidl-uuid.o cguid-uuid.o \
|
||||
olectlid-uuid.o ativscp-uuid.o urlmon-uuid.o hlink-uuid.o \
|
||||
hlguids-uuid.o extras-uuid.o devguid.o power-uuid.o
|
||||
EXTRA_OBJS = shell32.o scrnsave.o scrnsavw.o largeint.o \
|
||||
EXTRA_OBJS = shell32.o scrnsave.o scrnsavw.o largeint.o gdiplus.o \
|
||||
$(UUID_OBJS) ws2_32.o
|
||||
UUID_SOURCES = mshtml-uuid.c msxml-uuid.c unknwn-uuid.c \
|
||||
servprov-uuid.c oleidl-uuid.c oleacc-uuid.c ocidl-uuid.c \
|
||||
|
@ -135,7 +136,7 @@ UUID_SOURCES = mshtml-uuid.c msxml-uuid.c unknwn-uuid.c \
|
|||
exdisp-uuid.c mlang-uuid.c objidl-uuid.c cguid-uuid.c \
|
||||
olectlid-uuid.c ativscp-uuid.c urlmon-uuid.c hlink-uuid.c \
|
||||
hlguids-uuid.c extras-uuid.c devguid.c power-uuid.c
|
||||
SOURCES = scrnsave.c shell32.c largeint.c $(UUID_SOURCES)\
|
||||
SOURCES = scrnsave.c shell32.c largeint.c gdiplus.c $(UUID_SOURCES) \
|
||||
res.rc test.c ws2_32.c
|
||||
|
||||
DISTFILES = Makefile.in $(DEF_FILES) $(MRI_FILES) $(SOURCES)
|
||||
|
@ -239,6 +240,10 @@ install-headers: $(need-DESTDIR-compatibility)
|
|||
for i in $(GL_HEADERS); do \
|
||||
$(INSTALL_DATA) $(srcdir)/../include/GL/$$i $(DESTDIR)$(inst_includedir)/GL/$$i ; \
|
||||
done
|
||||
$(mkinstalldirs) $(DESTDIR)$(inst_includedir)/gdiplus
|
||||
for i in $(GDIPLUS_HEADERS); do \
|
||||
$(INSTALL_DATA) $(srcdir)/../include/gdiplus/$$i $(DESTDIR)$(inst_includedir)/gdiplus/$$i ; \
|
||||
done
|
||||
|
||||
install-ddk: install-libraries install-headers
|
||||
cd ddk && $(MAKE) install $(FLAGS_TO_PASS)
|
||||
|
|
|
@ -0,0 +1,67 @@
|
|||
/*
|
||||
* Generate GUIDs for GDI+
|
||||
*
|
||||
* The Image Format GUIDs were generated by loading example images of
|
||||
* various types with GdipLoadImageFromFile and then extracting the
|
||||
* image format with GdipGetImageRawFormat.
|
||||
*
|
||||
* The Encoder Parameter GUIDs were taken from this .NET MSDN page:
|
||||
* http://msdn.microsoft.com/en-us/library/system.drawing.imaging.encoder.quality.aspx
|
||||
*
|
||||
* The Frame Dimension GUIDs were generated by loading example multi-frame
|
||||
* images (multi-page TIFF; animated GIF) and querying the frame dimension list
|
||||
* using GdipImageGetFrameDimensionsList.
|
||||
*/
|
||||
|
||||
/* TODO: find the remaining GUIDs */
|
||||
|
||||
#define INITGUID
|
||||
#include <basetyps.h>
|
||||
|
||||
void *_GdipFontFamilyCachedGenericMonospace = 0;
|
||||
void *_GdipFontFamilyCachedGenericSansSerif = 0;
|
||||
void *_GdipFontFamilyCachedGenericSerif = 0;
|
||||
void *_GdipStringFormatCachedGenericDefault = 0;
|
||||
void *_GdipStringFormatCachedGenericTypographic = 0;
|
||||
|
||||
DEFINE_GUID(EncoderChrominanceTable,0xF2E455DC,0x09B3,0x4316,0x82,0x60,0x67,0x6A,0xDA,0x32,0x48,0x1C);
|
||||
DEFINE_GUID(EncoderColorDepth,0x66087055,0xAD66,0x4C7C,0x9A,0x18,0x38,0xA2,0x31,0x0B,0x83,0x37);
|
||||
/* EncoderColorSpace missing */
|
||||
DEFINE_GUID(EncoderCompression,0xE09D739D,0xCCD4,0x44EE,0x8E,0xBA,0x3F,0xBF,0x8B,0xE4,0xFC,0x58);
|
||||
/* EncoderImageItems missing */
|
||||
DEFINE_GUID(EncoderLuminanceTable,0xEDB33BCE,0x0266,0x4A77,0xB9,0x04,0x27,0x21,0x60,0x99,0xE7,0x17);
|
||||
DEFINE_GUID(EncoderQuality,0x1D5BE4B5,0xFA4A,0x452D,0x9C,0xDD,0x5D,0xB3,0x51,0x05,0xE7,0xEB);
|
||||
DEFINE_GUID(EncoderRenderMethod,0x6D42C53A,0x229A,0x4825,0x8B,0xB7,0x5C,0x99,0xE2,0xB9,0xA8,0xB8);
|
||||
/* EncoderSaveAsCMYK missing */
|
||||
DEFINE_GUID(EncoderSaveFlag,0x292266FC,0xAC40,0x47BF,0x8C,0xFC,0xA8,0x5B,0x89,0xA6,0x55,0xDE);
|
||||
DEFINE_GUID(EncoderScanMethod,0x3A4E2661,0x3109,0x4E56,0x85,0x36,0x42,0xC1,0x56,0xE7,0xDC,0xFA);
|
||||
DEFINE_GUID(EncoderTransformation,0x8D0EB2D1,0xA58E,0x4EA8,0xAA,0x14,0x10,0x80,0x74,0xB7,0xB6,0xF9);
|
||||
DEFINE_GUID(EncoderVersion,0x24D18C76,0x814A,0x41A4,0xBF,0x53,0x1C,0x21,0x9C,0xCC,0xF7,0x97);
|
||||
|
||||
DEFINE_GUID(ImageFormatBMP,0xB96B3CAB,0x0728,0x11D3,0x9D,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E);
|
||||
DEFINE_GUID(ImageFormatEMF,0xB96B3CAC,0x0728,0x11D3,0x9D,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E);
|
||||
/* ImageFormatEXIF missing */
|
||||
DEFINE_GUID(ImageFormatGIF,0xB96B3CB0,0x0728,0x11D3,0x9D,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E);
|
||||
DEFINE_GUID(ImageFormatIcon,0xB96B3CB5,0x0728,0x11D3,0x9D,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E);
|
||||
DEFINE_GUID(ImageFormatJPEG,0xB96B3CAE,0x0728,0x11D3,0x9D,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E);
|
||||
DEFINE_GUID(ImageFormatMemoryBMP,0xB96B3CAA,0x0728,0x11D3,0x9D,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E);
|
||||
DEFINE_GUID(ImageFormatPNG,0xB96B3CAF,0x0728,0x11D3,0x9D,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E);
|
||||
DEFINE_GUID(ImageFormatTIFF,0xB96B3CB1,0x0728,0x11D3,0x9D,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E);
|
||||
/* ImageFormatUndefined missing */
|
||||
DEFINE_GUID(ImageFormatWMF,0xB96B3CAD,0x0728,0x11D3,0x9D,0x7B,0x00,0x00,0xF8,0x1E,0xF3,0x2E);
|
||||
|
||||
DEFINE_GUID(FrameDimensionPage,0x7462DC86,0x6180,0x4C7E,0x8E,0x3F,0xEE,0x73,0x33,0xA7,0xA4,0x83);
|
||||
/* FrameDimensionResolution missing */
|
||||
DEFINE_GUID(FrameDimensionTime,0x6AEDBD6D,0x3FB5,0x418A,0x83,0xA6,0x7F,0x45,0x22,0x9D,0xC8,0x72);
|
||||
|
||||
/* BlurEffectGuid missing */
|
||||
/* BrightnessContrastEffectGuid missing */
|
||||
/* ColorBalanceEffectGuid missing */
|
||||
/* ColorCurveEffectGuid missing */
|
||||
/* ColorLUTEffectGuid missing */
|
||||
/* ColorMatrixEffectGuid missing */
|
||||
/* HueSaturationLightnessEffectGuid missing */
|
||||
/* LevelsEffectGuid missing */
|
||||
/* RedEyeCorrectionEffectGuid missing */
|
||||
/* SharpenEffectGuid missing */
|
||||
/* TintEffectGuid missing */
|
|
@ -0,0 +1,633 @@
|
|||
LIBRARY GDIPLUS.DLL
|
||||
EXPORTS
|
||||
GdipAddPathArc@28
|
||||
GdipAddPathArcI@28
|
||||
GdipAddPathBezier@36
|
||||
GdipAddPathBezierI@36
|
||||
GdipAddPathBeziers@12
|
||||
GdipAddPathBeziersI@12
|
||||
GdipAddPathClosedCurve@12
|
||||
GdipAddPathClosedCurve2@16
|
||||
GdipAddPathClosedCurve2I@16
|
||||
GdipAddPathClosedCurveI@12
|
||||
GdipAddPathCurve@12
|
||||
GdipAddPathCurve2@16
|
||||
GdipAddPathCurve2I@16
|
||||
GdipAddPathCurve3@24
|
||||
GdipAddPathCurve3I@24
|
||||
GdipAddPathCurveI@12
|
||||
GdipAddPathEllipse@20
|
||||
GdipAddPathEllipseI@20
|
||||
GdipAddPathLine@20
|
||||
GdipAddPathLine2@12
|
||||
GdipAddPathLine2I@12
|
||||
GdipAddPathLineI@20
|
||||
GdipAddPathPath@12
|
||||
GdipAddPathPie@28
|
||||
GdipAddPathPieI@28
|
||||
GdipAddPathPolygon@12
|
||||
GdipAddPathPolygonI@12
|
||||
GdipAddPathRectangle@20
|
||||
GdipAddPathRectangleI@20
|
||||
GdipAddPathRectangles@12
|
||||
GdipAddPathRectanglesI@12
|
||||
GdipAddPathString@32
|
||||
GdipAddPathStringI@32
|
||||
GdipAlloc@4
|
||||
GdipBeginContainer@20
|
||||
GdipBeginContainer2@8
|
||||
GdipBeginContainerI@20
|
||||
GdipBitmapApplyEffect@24
|
||||
GdipBitmapConvertFormat@24
|
||||
GdipBitmapCreateApplyEffect@36
|
||||
GdipBitmapGetHistogram@28
|
||||
GdipBitmapGetHistogramSize@8
|
||||
GdipBitmapGetPixel@16
|
||||
GdipBitmapLockBits@20
|
||||
GdipBitmapSetPixel@16
|
||||
GdipBitmapSetResolution@12
|
||||
GdipBitmapUnlockBits@8
|
||||
GdipClearPathMarkers@4
|
||||
GdipCloneBitmapArea@28
|
||||
GdipCloneBitmapAreaI@28
|
||||
GdipCloneBrush@8
|
||||
GdipCloneCustomLineCap@8
|
||||
GdipCloneFont@8
|
||||
GdipCloneFontFamily@8
|
||||
GdipCloneImage@8
|
||||
GdipCloneImageAttributes@8
|
||||
GdipCloneMatrix@8
|
||||
GdipClonePath@8
|
||||
GdipClonePen@8
|
||||
GdipCloneRegion@8
|
||||
GdipCloneStringFormat@8
|
||||
GdipClosePathFigure@4
|
||||
GdipClosePathFigures@4
|
||||
GdipCombineRegionPath@12
|
||||
GdipCombineRegionRect@12
|
||||
GdipCombineRegionRectI@12
|
||||
GdipCombineRegionRegion@12
|
||||
GdipComment@12
|
||||
GdipConvertToEmfPlus@24
|
||||
GdipConvertToEmfPlusToFile@28
|
||||
GdipConvertToEmfPlusToStream@28
|
||||
GdipCreateAdjustableArrowCap@16
|
||||
GdipCreateBitmapFromDirectDrawSurface@8
|
||||
GdipCreateBitmapFromFile@8
|
||||
GdipCreateBitmapFromFileICM@8
|
||||
GdipCreateBitmapFromGdiDib@12
|
||||
GdipCreateBitmapFromGraphics@16
|
||||
GdipCreateBitmapFromHBITMAP@12
|
||||
GdipCreateBitmapFromHICON@8
|
||||
GdipCreateBitmapFromResource@12
|
||||
GdipCreateBitmapFromScan0@24
|
||||
GdipCreateBitmapFromStream@8
|
||||
GdipCreateBitmapFromStreamICM@8
|
||||
GdipCreateCachedBitmap@12
|
||||
GdipCreateCustomLineCap@20
|
||||
GdipCreateEffect@20
|
||||
GdipCreateFont@20
|
||||
GdipCreateFontFamilyFromName@12
|
||||
GdipCreateFontFromDC@8
|
||||
GdipCreateFontFromLogfontA@12
|
||||
GdipCreateFontFromLogfontW@12
|
||||
GdipCreateFromHDC@8
|
||||
GdipCreateFromHDC2@12
|
||||
GdipCreateFromHWND@8
|
||||
GdipCreateFromHWNDICM@8
|
||||
GdipCreateHBITMAPFromBitmap@12
|
||||
GdipCreateHICONFromBitmap@8
|
||||
GdipCreateHalftonePalette@
|
||||
GdipCreateHatchBrush@16
|
||||
GdipCreateImageAttributes@4
|
||||
GdipCreateLineBrush@24
|
||||
GdipCreateLineBrushFromRect@24
|
||||
GdipCreateLineBrushFromRectI@24
|
||||
GdipCreateLineBrushFromRectWithAngle@28
|
||||
GdipCreateLineBrushFromRectWithAngleI@28
|
||||
GdipCreateLineBrushI@24
|
||||
GdipCreateMatrix@4
|
||||
GdipCreateMatrix2@28
|
||||
GdipCreateMatrix3@12
|
||||
GdipCreateMatrix3I@12
|
||||
GdipCreateMetafileFromEmf@12
|
||||
GdipCreateMetafileFromFile@8
|
||||
GdipCreateMetafileFromStream@8
|
||||
GdipCreateMetafileFromWmf@16
|
||||
GdipCreateMetafileFromWmfFile@12
|
||||
GdipCreatePath@8
|
||||
GdipCreatePath2@20
|
||||
GdipCreatePath2I@20
|
||||
GdipCreatePathGradient@16
|
||||
GdipCreatePathGradientFromPath@8
|
||||
GdipCreatePathGradientI@16
|
||||
GdipCreatePathIter@8
|
||||
GdipCreatePen1@16
|
||||
GdipCreatePen2@16
|
||||
GdipCreateRegion@4
|
||||
GdipCreateRegionHrgn@8
|
||||
GdipCreateRegionPath@8
|
||||
GdipCreateRegionRect@8
|
||||
GdipCreateRegionRectI@8
|
||||
GdipCreateRegionRgnData@12
|
||||
GdipCreateSolidFill@8
|
||||
GdipCreateStreamOnFile@12
|
||||
GdipCreateStringFormat@12
|
||||
GdipCreateTexture@12
|
||||
GdipCreateTexture2@28
|
||||
GdipCreateTexture2I@28
|
||||
GdipCreateTextureIA@28
|
||||
GdipCreateTextureIAI@28
|
||||
GdipDeleteBrush@4
|
||||
GdipDeleteCachedBitmap@4
|
||||
GdipDeleteCustomLineCap@4
|
||||
GdipDeleteEffect@4
|
||||
GdipDeleteFont@4
|
||||
GdipDeleteFontFamily@4
|
||||
GdipDeleteGraphics@4
|
||||
GdipDeleteMatrix@4
|
||||
GdipDeletePath@4
|
||||
GdipDeletePathIter@4
|
||||
GdipDeletePen@4
|
||||
GdipDeletePrivateFontCollection@4
|
||||
GdipDeleteRegion@4
|
||||
GdipDeleteStringFormat@4
|
||||
GdipDisposeImage@4
|
||||
GdipDisposeImageAttributes@4
|
||||
GdipDrawArc@32
|
||||
GdipDrawArcI@32
|
||||
GdipDrawBezier@40
|
||||
GdipDrawBezierI@40
|
||||
GdipDrawBeziers@16
|
||||
GdipDrawBeziersI@16
|
||||
GdipDrawCachedBitmap@16
|
||||
GdipDrawClosedCurve@16
|
||||
GdipDrawClosedCurve2@20
|
||||
GdipDrawClosedCurve2I@20
|
||||
GdipDrawClosedCurveI@16
|
||||
GdipDrawCurve@16
|
||||
GdipDrawCurve2@20
|
||||
GdipDrawCurve2I@20
|
||||
GdipDrawCurve3@28
|
||||
GdipDrawCurve3I@28
|
||||
GdipDrawCurveI@16
|
||||
GdipDrawDriverString@32
|
||||
GdipDrawEllipse@24
|
||||
GdipDrawEllipseI@24
|
||||
GdipDrawImage@16
|
||||
GdipDrawImageFX@28
|
||||
GdipDrawImageI@16
|
||||
GdipDrawImagePointRect@36
|
||||
GdipDrawImagePointRectI@36
|
||||
GdipDrawImagePoints@16
|
||||
GdipDrawImagePointsI@16
|
||||
GdipDrawImagePointsRect@48
|
||||
GdipDrawImagePointsRectI@48
|
||||
GdipDrawImageRect@24
|
||||
GdipDrawImageRectI@24
|
||||
GdipDrawImageRectRect@56
|
||||
GdipDrawImageRectRectI@56
|
||||
GdipDrawLine@24
|
||||
GdipDrawLineI@24
|
||||
GdipDrawLines@16
|
||||
GdipDrawLinesI@16
|
||||
GdipDrawPath@12
|
||||
GdipDrawPie@32
|
||||
GdipDrawPieI@32
|
||||
GdipDrawPolygon@16
|
||||
GdipDrawPolygonI@16
|
||||
GdipDrawRectangle@24
|
||||
GdipDrawRectangleI@24
|
||||
GdipDrawRectangles@16
|
||||
GdipDrawRectanglesI@16
|
||||
GdipDrawString@28
|
||||
GdipEmfToWmfBits@20
|
||||
GdipEndContainer@8
|
||||
GdipEnumerateMetafileDestPoint@24
|
||||
GdipEnumerateMetafileDestPointI@24
|
||||
GdipEnumerateMetafileDestPoints@28
|
||||
GdipEnumerateMetafileDestPointsI@28
|
||||
GdipEnumerateMetafileDestRect@24
|
||||
GdipEnumerateMetafileDestRectI@24
|
||||
GdipEnumerateMetafileSrcRectDestPoint@32
|
||||
GdipEnumerateMetafileSrcRectDestPointI@32
|
||||
GdipEnumerateMetafileSrcRectDestPoints@36
|
||||
GdipEnumerateMetafileSrcRectDestPointsI@36
|
||||
GdipEnumerateMetafileSrcRectDestRect@32
|
||||
GdipEnumerateMetafileSrcRectDestRectI@32
|
||||
GdipFillClosedCurve@16
|
||||
GdipFillClosedCurve2@24
|
||||
GdipFillClosedCurve2I@24
|
||||
GdipFillClosedCurveI@16
|
||||
GdipFillEllipse@24
|
||||
GdipFillEllipseI@24
|
||||
GdipFillPath@12
|
||||
GdipFillPie@32
|
||||
GdipFillPieI@32
|
||||
GdipFillPolygon@20
|
||||
GdipFillPolygon2@16
|
||||
GdipFillPolygon2I@16
|
||||
GdipFillPolygonI@20
|
||||
GdipFillRectangle@24
|
||||
GdipFillRectangleI@24
|
||||
GdipFillRectangles@16
|
||||
GdipFillRectanglesI@16
|
||||
GdipFillRegion@12
|
||||
GdipFindFirstImageItem@8
|
||||
GdipFindNextImageItem@8
|
||||
GdipFlattenPath@12
|
||||
GdipFlush@8
|
||||
GdipFontCollectionEnumerable@12
|
||||
GdipFontCollectionEnumerate@20
|
||||
GdipFree@4
|
||||
GdipGetAdjustableArrowCapFillState@8
|
||||
GdipGetAdjustableArrowCapHeight@8
|
||||
GdipGetAdjustableArrowCapMiddleInset@8
|
||||
GdipGetAdjustableArrowCapWidth@8
|
||||
GdipGetAllPropertyItems@16
|
||||
GdipGetBrushType@8
|
||||
GdipGetCellAscent@12
|
||||
GdipGetCellDescent@12
|
||||
GdipGetClip@8
|
||||
GdipGetClipBounds@8
|
||||
GdipGetClipBoundsI@8
|
||||
GdipGetCompositingMode@8
|
||||
GdipGetCompositingQuality@8
|
||||
GdipGetCustomLineCapBaseCap@8
|
||||
GdipGetCustomLineCapBaseInset@8
|
||||
GdipGetCustomLineCapStrokeCaps@12
|
||||
GdipGetCustomLineCapStrokeJoin@8
|
||||
GdipGetCustomLineCapType@8
|
||||
GdipGetCustomLineCapWidthScale@8
|
||||
GdipGetDC@8
|
||||
GdipGetDpiX@8
|
||||
GdipGetDpiY@8
|
||||
GdipGetEffectParameterSize@8
|
||||
GdipGetEffectParameters@12
|
||||
GdipGetEmHeight@12
|
||||
GdipGetEncoderParameterList@16
|
||||
GdipGetEncoderParameterListSize@12
|
||||
GdipGetFamily@8
|
||||
GdipGetFamilyName@12
|
||||
GdipGetFontCollectionFamilyCount@8
|
||||
GdipGetFontCollectionFamilyList@16
|
||||
GdipGetFontHeight@12
|
||||
GdipGetFontHeightGivenDPI@12
|
||||
GdipGetFontSize@8
|
||||
GdipGetFontStyle@8
|
||||
GdipGetFontUnit@8
|
||||
GdipGetGenericFontFamilyMonospace@4
|
||||
GdipGetGenericFontFamilySansSerif@4
|
||||
GdipGetGenericFontFamilySerif@4
|
||||
GdipGetHatchBackgroundColor@8
|
||||
GdipGetHatchForegroundColor@8
|
||||
GdipGetHatchStyle@8
|
||||
GdipGetHemfFromMetafile@8
|
||||
GdipGetImageAttributesAdjustedPalette@12
|
||||
GdipGetImageBounds@12
|
||||
GdipGetImageDecoders@12
|
||||
GdipGetImageDecodersSize@8
|
||||
GdipGetImageDimension@12
|
||||
GdipGetImageEncoders@12
|
||||
GdipGetImageEncodersSize@8
|
||||
GdipGetImageFlags@8
|
||||
GdipGetImageGraphicsContext@8
|
||||
GdipGetImageHeight@8
|
||||
GdipGetImageHorizontalResolution@8
|
||||
GdipGetImageItemData@8
|
||||
GdipGetImagePalette@12
|
||||
GdipGetImagePaletteSize@8
|
||||
GdipGetImagePixelFormat@8
|
||||
GdipGetImageRawFormat@8
|
||||
GdipGetImageThumbnail@24
|
||||
GdipGetImageType@8
|
||||
GdipGetImageVerticalResolution@8
|
||||
GdipGetImageWidth@8
|
||||
GdipGetInterpolationMode@8
|
||||
GdipGetLineBlend@16
|
||||
GdipGetLineBlendCount@8
|
||||
GdipGetLineColors@8
|
||||
GdipGetLineGammaCorrection@8
|
||||
GdipGetLinePresetBlend@16
|
||||
GdipGetLinePresetBlendCount@8
|
||||
GdipGetLineRect@8
|
||||
GdipGetLineRectI@8
|
||||
GdipGetLineSpacing@12
|
||||
GdipGetLineTransform@8
|
||||
GdipGetLineWrapMode@8
|
||||
GdipGetLogFontA@12
|
||||
GdipGetLogFontW@12
|
||||
GdipGetMatrixElements@8
|
||||
GdipGetMetafileDownLevelRasterizationLimit@8
|
||||
GdipGetMetafileHeaderFromEmf@8
|
||||
GdipGetMetafileHeaderFromFile@8
|
||||
GdipGetMetafileHeaderFromMetafile@8
|
||||
GdipGetMetafileHeaderFromStream@8
|
||||
GdipGetNearestColor@8
|
||||
GdipGetPageScale@8
|
||||
GdipGetPageUnit@8
|
||||
GdipGetPathData@8
|
||||
GdipGetPathFillMode@8
|
||||
GdipGetPathGradientBlend@16
|
||||
GdipGetPathGradientBlendCount@8
|
||||
GdipGetPathGradientCenterColor@8
|
||||
GdipGetPathGradientCenterPoint@8
|
||||
GdipGetPathGradientCenterPointI@8
|
||||
GdipGetPathGradientFocusScales@12
|
||||
GdipGetPathGradientGammaCorrection@8
|
||||
GdipGetPathGradientPath@8
|
||||
GdipGetPathGradientPointCount@8
|
||||
GdipGetPathGradientPresetBlend@16
|
||||
GdipGetPathGradientPresetBlendCount@8
|
||||
GdipGetPathGradientRect@8
|
||||
GdipGetPathGradientRectI@8
|
||||
GdipGetPathGradientSurroundColorCount@8
|
||||
GdipGetPathGradientSurroundColorsWithCount@12
|
||||
GdipGetPathGradientTransform@8
|
||||
GdipGetPathGradientWrapMode@8
|
||||
GdipGetPathLastPoint@8
|
||||
GdipGetPathPoints@12
|
||||
GdipGetPathPointsI@12
|
||||
GdipGetPathTypes@12
|
||||
GdipGetPathWorldBounds@16
|
||||
GdipGetPathWorldBoundsI@16
|
||||
GdipGetPenBrushFill@8
|
||||
GdipGetPenColor@8
|
||||
GdipGetPenCompoundArray@12
|
||||
GdipGetPenCompoundCount@8
|
||||
GdipGetPenCustomEndCap@8
|
||||
GdipGetPenCustomStartCap@8
|
||||
GdipGetPenDashArray@12
|
||||
GdipGetPenDashCap197819@8
|
||||
GdipGetPenDashCount@8
|
||||
GdipGetPenDashOffset@8
|
||||
GdipGetPenDashStyle@8
|
||||
GdipGetPenEndCap@8
|
||||
GdipGetPenFillType@8
|
||||
GdipGetPenLineJoin@8
|
||||
GdipGetPenMiterLimit@8
|
||||
GdipGetPenMode@8
|
||||
GdipGetPenStartCap@8
|
||||
GdipGetPenTransform@8
|
||||
GdipGetPenUnit@8
|
||||
GdipGetPenWidth@8
|
||||
GdipGetPixelOffsetMode@8
|
||||
GdipGetPointCount@8
|
||||
GdipGetPropertyCount@8
|
||||
GdipGetPropertyIdList@12
|
||||
GdipGetPropertyItem@16
|
||||
GdipGetPropertyItemSize@12
|
||||
GdipGetPropertySize@12
|
||||
GdipGetRegionBounds@12
|
||||
GdipGetRegionBoundsI@12
|
||||
GdipGetRegionData@16
|
||||
GdipGetRegionDataSize@8
|
||||
GdipGetRegionHRgn@12
|
||||
GdipGetRegionScans@16
|
||||
GdipGetRegionScansCount@12
|
||||
GdipGetRegionScansI@16
|
||||
GdipGetRenderingOrigin@12
|
||||
GdipGetSmoothingMode@8
|
||||
GdipGetSolidFillColor@8
|
||||
GdipGetStringFormatAlign@8
|
||||
GdipGetStringFormatDigitSubstitution@12
|
||||
GdipGetStringFormatFlags@8
|
||||
GdipGetStringFormatHotkeyPrefix@8
|
||||
GdipGetStringFormatLineAlign@8
|
||||
GdipGetStringFormatMeasurableCharacterRangeCount@8
|
||||
GdipGetStringFormatTabStopCount@8
|
||||
GdipGetStringFormatTabStops@16
|
||||
GdipGetStringFormatTrimming@8
|
||||
GdipGetTextContrast@8
|
||||
GdipGetTextRenderingHint@8
|
||||
GdipGetTextureImage@8
|
||||
GdipGetTextureTransform@8
|
||||
GdipGetTextureWrapMode@8
|
||||
GdipGetVisibleClipBounds@8
|
||||
GdipGetVisibleClipBoundsI@8
|
||||
GdipGetWorldTransform@8
|
||||
GdipGraphicsClear@8
|
||||
GdipGraphicsSetAbort@8
|
||||
GdipImageForceValidation@4
|
||||
GdipImageGetFrameCount@12
|
||||
GdipImageGetFrameDimensionsCount@8
|
||||
GdipImageGetFrameDimensionsList@12
|
||||
GdipImageRotateFlip@8
|
||||
GdipImageSelectActiveFrame@12
|
||||
GdipImageSetAbort@8
|
||||
GdipInitializePalette@20
|
||||
GdipInvertMatrix@4
|
||||
GdipIsClipEmpty@8
|
||||
GdipIsEmptyRegion@12
|
||||
GdipIsEqualRegion@16
|
||||
GdipIsInfiniteRegion@12
|
||||
GdipIsMatrixEqual@12
|
||||
GdipIsMatrixIdentity@8
|
||||
GdipIsMatrixInvertible@8
|
||||
GdipIsOutlineVisiblePathPoint@24
|
||||
GdipIsOutlineVisiblePathPointI@24
|
||||
GdipIsStyleAvailable@12
|
||||
GdipIsVisibleClipEmpty@8
|
||||
GdipIsVisiblePathPoint@20
|
||||
GdipIsVisiblePathPointI@20
|
||||
GdipIsVisiblePoint@16
|
||||
GdipIsVisiblePointI@16
|
||||
GdipIsVisibleRect@24
|
||||
GdipIsVisibleRectI@24
|
||||
GdipIsVisibleRegionPoint@20
|
||||
GdipIsVisibleRegionPointI@20
|
||||
GdipIsVisibleRegionRect@28
|
||||
GdipIsVisibleRegionRectI@28
|
||||
GdipLoadImageFromFile@8
|
||||
GdipLoadImageFromFileICM@8
|
||||
GdipLoadImageFromStream@8
|
||||
GdipLoadImageFromStreamICM@8
|
||||
GdipMeasureCharacterRanges@32
|
||||
GdipMeasureDriverString@32
|
||||
GdipMeasureString@36
|
||||
GdipMultiplyLineTransform@12
|
||||
GdipMultiplyMatrix@12
|
||||
GdipMultiplyPathGradientTransform@12
|
||||
GdipMultiplyPenTransform@12
|
||||
GdipMultiplyTextureTransform@12
|
||||
GdipMultiplyWorldTransform@12
|
||||
GdipNewInstalledFontCollection@4
|
||||
GdipNewPrivateFontCollection@4
|
||||
GdipPathIterCopyData@24
|
||||
GdipPathIterEnumerate@20
|
||||
GdipPathIterGetCount@8
|
||||
GdipPathIterGetSubpathCount@8
|
||||
GdipPathIterHasCurve@8
|
||||
GdipPathIterIsValid@8
|
||||
GdipPathIterNextMarker@16
|
||||
GdipPathIterNextMarkerPath@12
|
||||
GdipPathIterNextPathType@20
|
||||
GdipPathIterNextSubpath@20
|
||||
GdipPathIterNextSubpathPath@16
|
||||
GdipPathIterRewind@4
|
||||
GdipPlayMetafileRecord@20
|
||||
GdipPrivateAddFontFile@8
|
||||
GdipPrivateAddMemoryFont@12
|
||||
GdipRecordMetafile@24
|
||||
GdipRecordMetafileFileName@28
|
||||
GdipRecordMetafileFileNameI@28
|
||||
GdipRecordMetafileI@24
|
||||
GdipRecordMetafileStream@28
|
||||
GdipRecordMetafileStreamI@28
|
||||
GdipReleaseDC@8
|
||||
GdipRemovePropertyItem@8
|
||||
GdipResetClip@4
|
||||
GdipResetImageAttributes@8
|
||||
GdipResetLineTransform@4
|
||||
GdipResetPageTransform@4
|
||||
GdipResetPath@4
|
||||
GdipResetPathGradientTransform@4
|
||||
GdipResetPenTransform@4
|
||||
GdipResetTextureTransform@4
|
||||
GdipResetWorldTransform@4
|
||||
GdipRestoreGraphics@8
|
||||
GdipReversePath@4
|
||||
GdipRotateLineTransform@12
|
||||
GdipRotateMatrix@12
|
||||
GdipRotatePathGradientTransform@12
|
||||
GdipRotatePenTransform@12
|
||||
GdipRotateTextureTransform@12
|
||||
GdipRotateWorldTransform@12
|
||||
GdipSaveAdd@8
|
||||
GdipSaveAddImage@12
|
||||
GdipSaveGraphics@8
|
||||
GdipSaveImageToFile@16
|
||||
GdipSaveImageToStream@16
|
||||
GdipScaleLineTransform@16
|
||||
GdipScaleMatrix@16
|
||||
GdipScalePathGradientTransform@16
|
||||
GdipScalePenTransform@16
|
||||
GdipScaleTextureTransform@16
|
||||
GdipScaleWorldTransform@16
|
||||
GdipSetAdjustableArrowCapFillState@8
|
||||
GdipSetAdjustableArrowCapHeight@8
|
||||
GdipSetAdjustableArrowCapMiddleInset@8
|
||||
GdipSetAdjustableArrowCapWidth@8
|
||||
GdipSetClipGraphics@12
|
||||
GdipSetClipHrgn@12
|
||||
GdipSetClipPath@12
|
||||
GdipSetClipRect@24
|
||||
GdipSetClipRectI@24
|
||||
GdipSetClipRegion@12
|
||||
GdipSetCompositingMode@8
|
||||
GdipSetCompositingQuality@8
|
||||
GdipSetCustomLineCapBaseCap@8
|
||||
GdipSetCustomLineCapBaseInset@8
|
||||
GdipSetCustomLineCapStrokeCaps@12
|
||||
GdipSetCustomLineCapStrokeJoin@8
|
||||
GdipSetCustomLineCapWidthScale@8
|
||||
GdipSetEffectParameters@12
|
||||
GdipSetEmpty@4
|
||||
GdipSetImageAttributesCachedBackground@8
|
||||
GdipSetImageAttributesColorKeys@20
|
||||
GdipSetImageAttributesColorMatrix@24
|
||||
GdipSetImageAttributesGamma@16
|
||||
GdipSetImageAttributesICMMode@8
|
||||
GdipSetImageAttributesNoOp@12
|
||||
GdipSetImageAttributesOutputChannel@16
|
||||
GdipSetImageAttributesOutputChannelColorProfile@16
|
||||
GdipSetImageAttributesRemapTable@20
|
||||
GdipSetImageAttributesThreshold@16
|
||||
GdipSetImageAttributesToIdentity@8
|
||||
GdipSetImageAttributesWrapMode@16
|
||||
GdipSetImagePalette@8
|
||||
GdipSetInfinite@4
|
||||
GdipSetInterpolationMode@8
|
||||
GdipSetLineBlend@16
|
||||
GdipSetLineColors@12
|
||||
GdipSetLineGammaCorrection@8
|
||||
GdipSetLineLinearBlend@12
|
||||
GdipSetLinePresetBlend@16
|
||||
GdipSetLineSigmaBlend@12
|
||||
GdipSetLineTransform@8
|
||||
GdipSetLineWrapMode@8
|
||||
GdipSetMatrixElements@28
|
||||
GdipSetMetafileDownLevelRasterizationLimit@8
|
||||
GdipSetPageScale@8
|
||||
GdipSetPageUnit@8
|
||||
GdipSetPathFillMode@8
|
||||
GdipSetPathGradientBlend@16
|
||||
GdipSetPathGradientCenterColor@8
|
||||
GdipSetPathGradientCenterPoint@8
|
||||
GdipSetPathGradientCenterPointI@8
|
||||
GdipSetPathGradientFocusScales@12
|
||||
GdipSetPathGradientGammaCorrection@8
|
||||
GdipSetPathGradientLinearBlend@12
|
||||
GdipSetPathGradientPath@8
|
||||
GdipSetPathGradientPresetBlend@16
|
||||
GdipSetPathGradientSigmaBlend@12
|
||||
GdipSetPathGradientSurroundColorsWithCount@12
|
||||
GdipSetPathGradientTransform@8
|
||||
GdipSetPathGradientWrapMode@8
|
||||
GdipSetPathMarker@4
|
||||
GdipSetPenBrushFill@8
|
||||
GdipSetPenColor@8
|
||||
GdipSetPenCompoundArray@12
|
||||
GdipSetPenCustomEndCap@8
|
||||
GdipSetPenCustomStartCap@8
|
||||
GdipSetPenDashArray@12
|
||||
GdipSetPenDashCap197819@8
|
||||
GdipSetPenDashOffset@8
|
||||
GdipSetPenDashStyle@8
|
||||
GdipSetPenEndCap@8
|
||||
GdipSetPenLineCap197819@16
|
||||
GdipSetPenLineJoin@8
|
||||
GdipSetPenMiterLimit@8
|
||||
GdipSetPenMode@8
|
||||
GdipSetPenStartCap@8
|
||||
GdipSetPenTransform@8
|
||||
GdipSetPenUnit@8
|
||||
GdipSetPenWidth@8
|
||||
GdipSetPixelOffsetMode@8
|
||||
GdipSetPropertyItem@8
|
||||
GdipSetRenderingOrigin@12
|
||||
GdipSetSmoothingMode@8
|
||||
GdipSetSolidFillColor@8
|
||||
GdipSetStringFormatAlign@8
|
||||
GdipSetStringFormatDigitSubstitution@12
|
||||
GdipSetStringFormatFlags@8
|
||||
GdipSetStringFormatHotkeyPrefix@8
|
||||
GdipSetStringFormatLineAlign@8
|
||||
GdipSetStringFormatMeasurableCharacterRanges@12
|
||||
GdipSetStringFormatTabStops@16
|
||||
GdipSetStringFormatTrimming@8
|
||||
GdipSetTextContrast@8
|
||||
GdipSetTextRenderingHint@8
|
||||
GdipSetTextureTransform@8
|
||||
GdipSetTextureWrapMode@8
|
||||
GdipSetWorldTransform@8
|
||||
GdipShearMatrix@16
|
||||
GdipStartPathFigure@4
|
||||
GdipStringFormatGetGenericDefault@4
|
||||
GdipStringFormatGetGenericTypographic@4
|
||||
GdipTestControl@8
|
||||
GdipTransformMatrixPoints@12
|
||||
GdipTransformMatrixPointsI@12
|
||||
GdipTransformPath@8
|
||||
GdipTransformPoints@20
|
||||
GdipTransformPointsI@20
|
||||
GdipTransformRegion@8
|
||||
GdipTranslateClip@12
|
||||
GdipTranslateClipI@12
|
||||
GdipTranslateLineTransform@16
|
||||
GdipTranslateMatrix@16
|
||||
GdipTranslatePathGradientTransform@16
|
||||
GdipTranslatePenTransform@16
|
||||
GdipTranslateRegion@12
|
||||
GdipTranslateRegionI@12
|
||||
GdipTranslateTextureTransform@16
|
||||
GdipTranslateWorldTransform@16
|
||||
GdipVectorTransformMatrixPoints@12
|
||||
GdipVectorTransformMatrixPointsI@12
|
||||
GdipWarpPath@40
|
||||
GdipWidenPath@16
|
||||
GdipWindingModeOutline@12
|
||||
GdiplusNotificationHook@4
|
||||
GdiplusNotificationUnhook@4
|
||||
GdiplusShutdown@4
|
||||
GdiplusStartup@12
|
|
@ -28,6 +28,7 @@
|
|||
#include <mapi.h>
|
||||
|
||||
#include <dbt.h>
|
||||
#include <gdiplus.h>
|
||||
#include <httpext.h>
|
||||
#include <icm.h>
|
||||
#include <imagehlp.h>
|
||||
|
|
Loading…
Reference in New Issue