📄 dxgdiplusapi.pas
字号:
{*******************************************************************}
{ }
{ Developer Express Visual Component Library }
{ GDI+ Library }
{ }
{ Copyright (c) 2002-2008 Developer Express Inc. }
{ ALL RIGHTS RESERVED }
{ }
{ The entire contents of this file is protected by U.S. and }
{ International Copyright Laws. Unauthorized reproduction, }
{ reverse-engineering, and distribution of all or any portion of }
{ the code contained in this file is strictly prohibited and may }
{ result in severe civil and criminal penalties and will be }
{ prosecuted to the maximum extent possible under the law. }
{ }
{ RESTRICTIONS }
{ }
{ THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES }
{ (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE }
{ SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS }
{ LICENSED TO DISTRIBUTE THE GDIPLUS LIBRARY AND ALL ACCOMPANYING }
{ VCL CONTROLS AS PART OF AN EXECUTABLE PROGRAM ONLY. }
{ }
{ THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED }
{ FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE }
{ COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE }
{ AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT }
{ AND PERMISSION FROM DEVELOPER EXPRESS INC. }
{ }
{ CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON }
{ ADDITIONAL RESTRICTIONS. }
{ }
{*******************************************************************}
unit dxGDIPlusAPI;
{$ALIGN ON}
{$MINENUMSIZE 4}
{$I cxVer.inc}
interface
(**************************************************************************\
*
* GDI+ public header file
*
\**************************************************************************)
uses
Windows, Graphics, Classes, SysUtils, ActiveX;
const
QualityModeInvalid = -1;
QualityModeDefault = 0;
QualityModeLow = 1; // Best performance
QualityModeHigh = 2; // Best rendering quality
InterpolationModeInvalid = QualityModeInvalid;
InterpolationModeDefault = QualityModeDefault;
InterpolationModeLowQuality = QualityModeLow;
InterpolationModeHighQuality = QualityModeHigh;
InterpolationModeBilinear = 3;
InterpolationModeBicubic = 4;
InterpolationModeNearestNeighbor = 5;
InterpolationModeHighQualityBilinear = 6;
InterpolationModeHighQualityBicubic = 7;
// Alpha Compositing mode constants
CompositingModeSourceOver = 0;
CompositingModeSourceCopy = 1;
// Alpha Compositing quality constants
CompositingQualityInvalid = QualityModeInvalid;
CompositingQualityDefault = QualityModeDefault;
CompositingQualityHighSpeed = QualityModeLow;
CompositingQualityHighQuality = QualityModeHigh;
CompositingQualityGammaCorrected = 3;
CompositingQualityAssumeLinear = 4;
PixelFormat32bppPARGB = $E200B;
type
TSingleDynArray = array of Single;
// GDI+ base memory allocation class
TdxGPBase = class
public
class function NewInstance: TObject; override;
procedure FreeInstance; override;
end;
TgpImageAbort = function: Bool;
// Unit constants
Unit_ = (
UnitWorld, // 0 -- World coordinate (non-physical unit)
UnitDisplay, // 1 -- Variable -- for PageTransform only
UnitPixel, // 2 -- Each unit is one device pixel.
UnitPoint, // 3 -- Each unit is a printer's point, or 1/72 inch.
UnitInch, // 4 -- Each unit is 1 inch.
UnitDocument, // 5 -- Each unit is 1/300 inch.
UnitMillimeter // 6 -- Each unit is 1 millimeter.
);
TdxGPUnit = Unit_;
// Fill mode constants
FillMode = (
FillModeAlternate, // 0
FillModeWinding // 1
);
TdxGPFillMode = FillMode;
// Various wrap modes for brushes
WrapMode = (
WrapModeTile, // 0
WrapModeTileFlipX, // 1
WrapModeTileFlipY, // 2
WrapModeTileFlipXY, // 3
WrapModeClamp // 4
);
TdxGPWrapMode = WrapMode;
// Various hatch styles
HatchStyle = (
HatchStyleHorizontal, // = 0,
HatchStyleVertical, // = 1,
HatchStyleForwardDiagonal, // = 2,
HatchStyleBackwardDiagonal, // = 3,
HatchStyleCross, // = 4,
HatchStyleDiagonalCross, // = 5,
HatchStyle05Percent, // = 6,
HatchStyle10Percent, // = 7,
HatchStyle20Percent, // = 8,
HatchStyle25Percent, // = 9,
HatchStyle30Percent, // = 10,
HatchStyle40Percent, // = 11,
HatchStyle50Percent, // = 12,
HatchStyle60Percent, // = 13,
HatchStyle70Percent, // = 14,
HatchStyle75Percent, // = 15,
HatchStyle80Percent, // = 16,
HatchStyle90Percent, // = 17,
HatchStyleLightDownwardDiagonal, // = 18,
HatchStyleLightUpwardDiagonal, // = 19,
HatchStyleDarkDownwardDiagonal, // = 20,
HatchStyleDarkUpwardDiagonal, // = 21,
HatchStyleWideDownwardDiagonal, // = 22,
HatchStyleWideUpwardDiagonal, // = 23,
HatchStyleLightVertical, // = 24,
HatchStyleLightHorizontal, // = 25,
HatchStyleNarrowVertical, // = 26,
HatchStyleNarrowHorizontal, // = 27,
HatchStyleDarkVertical, // = 28,
HatchStyleDarkHorizontal, // = 29,
HatchStyleDashedDownwardDiagonal, // = 30,
HatchStyleDashedUpwardDiagonal, // = 31,
HatchStyleDashedHorizontal, // = 32,
HatchStyleDashedVertical, // = 33,
HatchStyleSmallConfetti, // = 34,
HatchStyleLargeConfetti, // = 35,
HatchStyleZigZag, // = 36,
HatchStyleWave, // = 37,
HatchStyleDiagonalBrick, // = 38,
HatchStyleHorizontalBrick, // = 39,
HatchStyleWeave, // = 40,
HatchStylePlaid, // = 41,
HatchStyleDivot, // = 42,
HatchStyleDottedGrid, // = 43,
HatchStyleDottedDiamond, // = 44,
HatchStyleShingle, // = 45,
HatchStyleTrellis, // = 46,
HatchStyleSphere, // = 47,
HatchStyleSmallGrid, // = 48,
HatchStyleSmallCheckerBoard, // = 49,
HatchStyleLargeCheckerBoard, // = 50,
HatchStyleOutlinedDiamond, // = 51,
HatchStyleSolidDiamond, // = 52,
HatchStyleTotal // = 53,
);
const
HatchStyleLargeGrid = HatchStyleCross; // 4
HatchStyleMin = HatchStyleHorizontal;
HatchStyleMax = HatchStyleSolidDiamond;
type
TdxGPHatchStyle = HatchStyle;
// Dash style constants
DashStyle = (
DashStyleSolid, // 0
DashStyleDash, // 1
DashStyleDot, // 2
DashStyleDashDot, // 3
DashStyleDashDotDot, // 4
DashStyleCustom // 5
);
TdxGPDashStyle = DashStyle;
// WarpMode constants
WarpMode = (
WarpModePerspective, // 0
WarpModeBilinear // 1
);
TdxGPWarpMode = WarpMode;
// LineGradient Mode
LinearGradientMode = (
LinearGradientModeHorizontal, // 0
LinearGradientModeVertical, // 1
LinearGradientModeForwardDiagonal, // 2
LinearGradientModeBackwardDiagonal // 3
);
TdxGPLinearGradientMode = LinearGradientMode;
// Pen types
PenAlignment = (
PenAlignmentCenter, // = 0,
PenAlignmentInset // = 1
);
TdxGPPenAlignment = PenAlignment;
// Brush types
BrushType = (
BrushTypeSolidColor, // = 0,
BrushTypeHatchFill, // = 1,
BrushTypeTextureFill, // = 2,
BrushTypePathGradient, // = 3,
BrushTypeLinearGradient // = 4
);
TdxGPBrushType = BrushType;
// Pen's Fill types
{$EXTERNALSYM PenType}
PenType = Integer;
const
PenTypeSolidColor = 0;
PenTypeHatchFill = 1;
PenTypeTextureFill = 2;
PenTypePathGradient = 3;
PenTypeLinearGradient = 4;
PenTypeUnknown = -1;
type
TdxGPPenType = PenType;
// Status return values from GDI+ methods
type
Status = (
Ok,
GenericError,
InvalidParameter,
OutOfMemory,
ObjectBusy,
InsufficientBuffer,
NotImplemented,
Win32Error,
WrongState,
Aborted,
FileNotFound,
ValueOverflow,
AccessDenied,
UnknownImageFormat,
FontFamilyNotFound,
FontStyleNotFound,
NotTrueTypeFont,
UnsupportedGdiplusVersion,
GdiplusNotInitialized,
PropertyNotFound,
PropertyNotSupported
);
TdxGPStatus = Status;
type
// Represents a dimension in a 2D coordinate system (floating-point coordinates)
PdxGPSizeF = ^TdxGPSizeF;
TdxGPSizeF = packed record
Width : Single;
Height : Single;
end;
// Represents a dimension in a 2D coordinate system (integer coordinates)
PdxGPSize = ^TdxGPSize;
TdxGPSize = packed record
Width : Integer;
Height : Integer;
end;
// Represents a location in a 2D coordinate system (floating-point coordinates)
PdxGPPointF = ^TdxGPPointF;
TdxGPPointF = packed record
X : Single;
Y : Single;
end;
TdxGPPointFDynArray = array of TdxGPPointF;
// Represents a location in a 2D coordinate system (integer coordinates)
PdxGPPoint = ^TdxGPPoint;
TdxGPPoint = packed record
X : Integer;
Y : Integer;
end;
TdxGPPointDynArray = array of TdxGPPoint;
// Represents a rectangle in a 2D coordinate system (floating-point coordinates)
PdxGPRectF = ^TdxGPRectF;
TdxGPRectF = packed record
X : Single;
Y : Single;
Width : Single;
Height: Single;
end;
TdxGPRectFDynArray = array of TdxGPRectF;
PdxGPRect = ^TdxGPRect;
TdxGPRect = packed record
X : Integer;
Y : Integer;
Width : Integer;
Height: Integer;
end;
TdxGPRectDynArray = array of TdxGPRect;
PdxGPImageCodecInfo = ^TdxGPImageCodecInfo;
TdxGPImageCodecInfo = packed record
Clsid: TGUID;
FormatID: TGUID;
CodecName: PWCHAR;
DllName: PWCHAR;
FormatDescription: PWCHAR;
FilenameExtension: PWCHAR;
MimeType: PWCHAR;
Flags: DWORD;
Version: DWORD;
SigCount: DWORD;
SigSize: DWORD;
SigPattern: PBYTE;
SigMask: PBYTE;
end;
TEncoderParameter = packed record
Guid : TGUID; // GUID of the parameter
NumberOfValues : ULONG; // Number of the parameter values
Type_ : ULONG; // Value type, like ValueTypeLONG etc.
Value : Pointer; // A pointer to the parameter values
end;
PEncoderParameter = ^TEncoderParameter;
TEncoderParameters = packed record
Count : UINT; // Number of parameters in this structure
Parameter : array[0..0] of TEncoderParameter; // Parameter values
end;
PEncoderParameters = ^TEncoderParameters;
DebugEventLevel = (
DebugEventLevelFatal,
DebugEventLevelWarning
);
TDebugEventLevel = DebugEventLevel;
DebugEventProc = procedure(level: DebugEventLevel; message: PChar); stdcall;
NotificationHookProc = function(out token: ULONG): Status; stdcall;
NotificationUnhookProc = procedure(token: ULONG); stdcall;
// Input structure for GdiplusStartup
GdiplusStartupInput = packed record
GdiplusVersion : Cardinal; // Must be 1
DebugEventCallback : DebugEventProc; // Ignored on free builds
SuppressBackgroundThread: BOOL; // FALSE unless you're prepared to call
// the hook/unhook functions properly
SuppressExternalCodecs : BOOL; // FALSE unless you want GDI+ only to use
end; // its internal image codecs.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -