* make SpkGraphTools compilable

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1695 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
blikblum 2011-06-18 00:19:41 +00:00
parent f7743aa480
commit 4b819ad6f7
2 changed files with 67 additions and 78 deletions

View File

@ -4,10 +4,11 @@ unit SpkGraphTools;
interface interface
uses Windows, Graphics, Classes, Math, Sysutils, Dialogs, uses
SpkMath; LCLIntf, Graphics, LCLType, Classes, Math, Sysutils, Dialogs, SpkMath;
const NUM_ZERO = 0.00000001; const
NUM_ZERO = 0.00000001;
(******************************************************************************* (*******************************************************************************
* * * *
@ -15,38 +16,22 @@ const NUM_ZERO = 0.00000001;
* * * *
*******************************************************************************) *******************************************************************************)
type // WskaŸnik do tablicy TRGBTriple type
PRGBTripleArray = ^TRGBTripleArray; // WskaŸnik do tablicy TRGBTriple
// Tablica TRGBTriple (u¿ywana podczas operacji ze ScanLine) PRGBTripleArray = ^TRGBTripleArray;
TRGBTripleArray = array[word] of TRGBTriple; // Tablica TRGBTriple (u¿ywana podczas operacji ze ScanLine)
TRGBTripleArray = array[word] of TRGBTriple;
type THSLTriple = record THSLTriple = record
H, S, L : extended; H, S, L : extended;
end; end;
type // Typ u¿ywany podczas rysowania gradientów // Rodzaj gradientu
TRIVERTEX = packed record TGradientType = (gtVertical, gtHorizontal);
x,y : DWORD; // Rodzaj linii gradientowej (miejsce rozmycia)
Red, TGradientLineShade = (lsShadeStart, lsShadeEnds, lsShadeCenter, lsShadeEnd);
Green, // Rodzaj linii gradientowej (wypuk³oœæ)
Blue, TGradient3dLine = (glRaised, glLowered);
Alpha : Word;
end;
type // Rodzaj gradientu
TGradientType = (gtVertical, gtHorizontal);
// Rodzaj linii gradientowej (miejsce rozmycia)
TGradientLineShade = (lsShadeStart, lsShadeEnds, lsShadeCenter, lsShadeEnd);
// Rodzaj linii gradientowej (wypuk³oœæ)
TGradient3dLine = (glRaised, glLowered);
(*******************************************************************************
* *
* Nag³ówki dla zewnêtrznych funkcji *
* *
*******************************************************************************)
function GradientFill(DC : hDC; pVertex : Pointer; dwNumVertex : DWORD; pMesh : Pointer; dwNumMesh, dwMode: DWORD) : DWord; stdcall; external 'msimg32.dll';
(******************************************************************************* (*******************************************************************************
* * * *
@ -54,55 +39,49 @@ function GradientFill(DC : hDC; pVertex : Pointer; dwNumVertex : DWORD; pMesh :
* * * *
*******************************************************************************) *******************************************************************************)
type TColorTools = class(TObject) TColorTools = class
private public
protected class function Darken(kolor : TColor; percentage : byte) : TColor;
public class function Brighten(kolor : TColor; percentage : byte) : TColor;
class function Darken(kolor : TColor; percentage : byte) : TColor; class function Shade(kol1,kol2 : TColor; percentage : byte) : TColor; overload;
class function Brighten(kolor : TColor; percentage : byte) : TColor; class function Shade(kol1,kol2 : TColor; Step : extended) : TColor; overload;
class function Shade(kol1,kol2 : TColor; percentage : byte) : TColor; overload; class function AddColors(c1, c2 : TColor) : TColor;
class function Shade(kol1,kol2 : TColor; Step : extended) : TColor; overload; class function MultiplyColors(c1, c2 : TColor) : TColor;
class function AddColors(c1, c2 : TColor) : TColor; class function MultiplyColor(color : TColor; scalar : integer) : TColor; overload;
class function MultiplyColors(c1, c2 : TColor) : TColor; class function MultiplyColor(color : TColor; scalar : extended) : TColor; overload;
class function MultiplyColor(color : TColor; scalar : integer) : TColor; overload; class function percent(min, pos, max : integer) : byte;
class function MultiplyColor(color : TColor; scalar : extended) : TColor; overload; class function RGB2HSL(ARGB : TRGBTriple) : THSLTriple;
class function percent(min, pos, max : integer) : byte; class function HSL2RGB(AHSL : THSLTriple) : TRGBTriple;
class function RGB2HSL(ARGB : TRGBTriple) : THSLTriple; class function RgbTripleToColor(ARgbTriple : TRGBTriple) : TColor;
class function HSL2RGB(AHSL : THSLTriple) : TRGBTriple; class function ColorToRgbTriple(AColor : TColor) : TRGBTriple;
class function RgbTripleToColor(ARgbTriple : TRGBTriple) : TColor; class function ColorToGrayscale(AColor : TColor) : TColor;
class function ColorToRgbTriple(AColor : TColor) : TRGBTriple; end;
class function ColorToGrayscale(AColor : TColor) : TColor;
end;
type TGradientTools = class(TObject) TGradientTools = class
private public
protected class procedure HGradient(canvas : TCanvas; cStart,cEnd : TColor; rect : T2DIntRect); overload;
public class procedure HGradient(canvas : TCanvas; cStart,cEnd : TColor; p1, p2 : TPoint); overload;
class procedure HGradient(canvas : TCanvas; cStart,cEnd : TColor; rect : T2DIntRect); overload; class procedure HGradient(canvas : TCanvas; cStart,cEnd : TColor; x1,y1,x2,y2 : integer); overload;
class procedure HGradient(canvas : TCanvas; cStart,cEnd : TColor; p1, p2 : TPoint); overload;
class procedure HGradient(canvas : TCanvas; cStart,cEnd : TColor; x1,y1,x2,y2 : integer); overload;
class procedure VGradient(canvas : TCanvas; cStart,cEnd : TColor; rect : T2DIntRect); overload; class procedure VGradient(canvas : TCanvas; cStart,cEnd : TColor; rect : T2DIntRect); overload;
class procedure VGradient(canvas : TCanvas; cStart,cEnd : TColor; p1, p2 : TPoint); overload; class procedure VGradient(canvas : TCanvas; cStart,cEnd : TColor; p1, p2 : TPoint); overload;
class procedure VGradient(canvas : TCanvas; cStart,cEnd : TColor; x1,y1,x2,y2 : integer); overload; class procedure VGradient(canvas : TCanvas; cStart,cEnd : TColor; x1,y1,x2,y2 : integer); overload;
class procedure Gradient(canvas : TCanvas; cStart,cEnd : TColor; rect : T2DIntRect; GradientType : TGradientType); overload; class procedure Gradient(canvas : TCanvas; cStart,cEnd : TColor; rect : T2DIntRect; GradientType : TGradientType); overload;
class procedure Gradient(canvas : TCanvas; cStart,cEnd : TColor; p1, p2 : TPoint; GradientType : TGradientType); overload; class procedure Gradient(canvas : TCanvas; cStart,cEnd : TColor; p1, p2 : TPoint; GradientType : TGradientType); overload;
class procedure Gradient(canvas : TCanvas; cStart,cEnd : TColor; x1,y1,x2,y2 : integer; GradientType : TGradientType); overload; class procedure Gradient(canvas : TCanvas; cStart,cEnd : TColor; x1,y1,x2,y2 : integer; GradientType : TGradientType); overload;
class procedure HGradientLine(canvas : TCanvas; cBase, cShade : TColor; x1, x2 , y : integer; ShadeMode : TGradientLineShade); class procedure HGradientLine(canvas : TCanvas; cBase, cShade : TColor; x1, x2 , y : integer; ShadeMode : TGradientLineShade);
class procedure VGradientLine(canvas : TCanvas; cBase, cShade : TColor; x, y1 , y2 : integer; ShadeMode : TGradientLineShade); class procedure VGradientLine(canvas : TCanvas; cBase, cShade : TColor; x, y1 , y2 : integer; ShadeMode : TGradientLineShade);
class procedure HGradient3dLine(canvas : TCanvas; x1,x2,y : integer; ShadeMode : TGradientLineShade; A3dKind : TGradient3dLine = glLowered); class procedure HGradient3dLine(canvas : TCanvas; x1,x2,y : integer; ShadeMode : TGradientLineShade; A3dKind : TGradient3dLine = glLowered);
class procedure VGradient3dLine(canvas : TCanvas; x,y1,y2 : integer; ShadeMode : TGradientLineShade; A3dKind : TGradient3dLine = glLowered); class procedure VGradient3dLine(canvas : TCanvas; x,y1,y2 : integer; ShadeMode : TGradientLineShade; A3dKind : TGradient3dLine = glLowered);
end; end;
type TTextTools = class TTextTools = class
private public
protected class procedure OutlinedText(Canvas : TCanvas; x, y : integer; text : string);
public end;
class procedure OutlinedText(Canvas : TCanvas; x, y : integer; text : string);
end;
implementation implementation
@ -333,7 +312,7 @@ end;
class procedure TGradientTools.HGradient(canvas : TCanvas; cStart,cEnd : TColor; rect : T2DIntRect); class procedure TGradientTools.HGradient(canvas : TCanvas; cStart,cEnd : TColor; rect : T2DIntRect);
var vert : array[0..1] of TRIVERTEX; var vert : array[0..1] of TRIVERTEX;
gRect : _GRADIENT_RECT; gRect : GRADIENTRECT;
Col1,Col2 : TColor; Col1,Col2 : TColor;
begin begin
@ -379,7 +358,7 @@ end;
class procedure TGradientTools.VGradient(canvas : TCanvas; cStart,cEnd : TColor; rect : T2DIntRect); class procedure TGradientTools.VGradient(canvas : TCanvas; cStart,cEnd : TColor; rect : T2DIntRect);
var vert : array[0..1] of TRIVERTEX; var vert : array[0..1] of TRIVERTEX;
gRect : _GRADIENT_RECT; gRect : GRADIENTRECT;
Col1,Col2 : TColor; Col1,Col2 : TColor;
begin begin

View File

@ -289,12 +289,22 @@ type
end; end;
{$endif} {$endif}
operator := (ARect: TRect): T2DIntRect;
operator - (Left: T2DVector; Right: T2DVector): T2DVector; operator - (Left: T2DVector; Right: T2DVector): T2DVector;
operator - (Left: T3DVector; Right: T3DVector): T3DVector; operator - (Left: T3DVector; Right: T3DVector): T3DVector;
implementation implementation
operator := (ARect: TRect): T2DIntRect;
begin
Result.Left := ARect.Left;
Result.Top := ARect.Top;
Result.Right := ARect.Right;
Result.Bottom := ARect.Bottom;
end;
operator - (Left: T2DVector; Right: T2DVector): T2DVector; operator - (Left: T2DVector; Right: T2DVector): T2DVector;
begin begin
Result.x := Left.x - Right.x; Result.x := Left.x - Right.x;