1
unit customdrawn_extra1;
9
Classes, SysUtils, Types,
10
// LCL -> Use only TForm, TWinControl, TCanvas and TLazIntfImage
11
Graphics, Controls, LCLType,
13
customdrawndrawers, customdrawn_common;
19
TCDDrawerExtra1 = class(TCDDrawerCommon)
21
function GetMeasures(AMeasureID: Integer): Integer; override;
22
// ===================================
23
// Common Controls Tab
24
// ===================================
25
procedure DrawTrackBar(ADest: TCanvas; ASize: TSize;
26
AState: TCDControlState; AStateEx: TCDPositionedCStateEx); override;
28
{ TCDButtonDrawerGrad = class(TCDButtonDrawer)
30
procedure DrawToIntfImage(ADest: TFPImageCanvas; CDButton: TCDButton); override;
31
procedure DrawToCanvas(ADest: TCanvas; CDButton: TCDButton); override;
34
TCDTrackBarDrawerGraph = class(TCDTrackBarDrawer)
36
procedure DrawToIntfImage(ADest: TFPImageCanvas; FPImg: TLazIntfImage;
37
CDTrackBar: TCDTrackBar); override;
38
procedure GetGeometry(var ALeftBorder, ARightBorder: Integer); override;
43
{procedure TCDButtonDrawerGrad.DrawToIntfImage(ADest: TFPImageCanvas;
49
procedure TCDButtonDrawerGrad.DrawToCanvas(ADest: TCanvas; CDButton: TCDButton);
54
// Button shape -> This crashes in Gtk2
55
TmpB := TBitmap.Create;
56
TmpB.Width := CDButton.Width;
57
TmpB.Height := CDButton.Height;
58
TmpB.Canvas.Brush.Color := CDButton.Color;
59
TmpB.Canvas.Brush.Style := bsSolid;
60
TmpB.Canvas.RoundRect(0, 0, TmpB.Width, TmpB.Height, 8, 8);
61
// CDButton.SetShape(TmpB);
65
Brush.Style := bsSolid;
66
Brush.Color := CDButton.Parent.Color;
67
Pen.Color := Brush.Color;
68
Rectangle(0, 0, Width, Height);
69
FillRect(0, 0, Width, Height);
70
Brush.Color := GetAColor(CDButton.Color, 90);
74
if CDButton.IsDown then
75
DrawCDButtonDown(TmpB.Canvas, CDButton.GetRGBBackgroundColor)
76
else if CDButton.Focused then
77
//GradientFill(GetUColor(CDButton.Color, 50), GetAColor(CDButton.Color, 60), TmpB.Canvas);
78
GradientFill(clWhite, GetAColor(CDButton.Color, 96), TmpB.Canvas)
80
//GradientFill(GetUColor(CDButton.Color, 10), GetAColor(CDButton.Color, 20), TmpB.Canvas);
81
GradientFill(clWhite, CDButton.Color, TmpB.Canvas);
83
ADest.Draw(0, 0, TmpB);
88
ADest.Font.Assign(CDButton.Font);
89
ADest.Brush.Style := bsClear;
90
ADest.Pen.Style := psSolid;
91
Str := CDButton.Caption;
92
ADest.TextOut((CDButton.Width - ADest.TextWidth(Str)) div 2,
93
(CDButton.Height - ADest.TextHeight(Str)) div 2, Str);
98
procedure TCDTrackBarDrawerGraph.DrawToIntfImage(ADest: TFPImageCanvas;
99
FPImg: TLazIntfImage; CDTrackBar: TCDTrackBar);
101
procedure TCDTrackBarDrawerGraph.GetGeometry(var ALeftBorder,
102
ARightBorder: Integer);
108
RegisterTrackBarDrawer(TCDTrackBarDrawerGraph.Create, dsExtra1);}
112
function TCDDrawerExtra1.GetMeasures(AMeasureID: Integer): Integer;
115
TCDTRACKBAR_LEFT_SPACING: Result := 9;
116
TCDTRACKBAR_RIGHT_SPACING: Result := 9;
118
Result:=inherited GetMeasures(AMeasureID);
122
procedure TCDDrawerExtra1.DrawTrackBar(ADest: TCanvas;
123
ASize: TSize; AState: TCDControlState; AStateEx: TCDPositionedCStateEx);
125
lDrawingBottom, StepsCount, i: Integer;
126
pStart, pEnd: integer; // for drawing the decorative bars
128
pStepWidth, pHalfStepWidth: Integer;
131
CDBarEdge := GetMeasures(TCDTRACKBAR_LEFT_SPACING)
132
+ GetMeasures(TCDTRACKBAR_RIGHT_SPACING);
135
StepsCount := AStateEx.PosCount;
136
pStepWidth := (ASize.cx - CDBarEdge) div StepsCount;
137
pHalfStepWidth := (ASize.cx - CDBarEdge) div (StepsCount * 2);
139
// The bottom part of the drawing
140
lDrawingBottom := ASize.cy - 10;
144
ADest.Brush.Color := AStateEx.ParentRGBColor;
145
ADest.Brush.Style := bsSolid;
146
ADest.Pen.Style := psSolid;
147
ADest.Pen.Color := AStateEx.ParentRGBColor;
148
ADest.Rectangle(0, 0, ASize.cx, ASize.cy);
150
// Draws the double-sided arrow in the center of the slider
152
ADest.Brush.Color := ColorToRGB($006BB6E6);
153
ADest.Pen.Style := psSolid;
154
ADest.Pen.Color := ColorToRGB($006BB6E6);
155
ADest.Line(0, lDrawingBottom, ASize.cx, lDrawingBottom);
156
ADest.Line(3, lDrawingBottom - 1, 6, lDrawingBottom - 1);
157
ADest.Line(5, lDrawingBottom - 2, 6, lDrawingBottom - 2);
158
ADest.Line(3, lDrawingBottom + 1, 6, lDrawingBottom + 1);
159
ADest.Line(5, lDrawingBottom + 2, 6, lDrawingBottom + 2);
160
ADest.Line(ASize.cx - 1 - 3, lDrawingBottom - 1, ASize.cx - 1 - 6, lDrawingBottom - 1);
161
ADest.Line(ASize.cx - 1 - 5, lDrawingBottom - 2, ASize.cx - 1 - 6, lDrawingBottom - 2);
162
ADest.Line(ASize.cx - 1 - 3, lDrawingBottom + 1, ASize.cx - 1 - 6, lDrawingBottom + 1);
163
ADest.Line(ASize.cx - 1 - 5, lDrawingBottom + 2, ASize.cx - 1 - 6, lDrawingBottom + 2);
164
ADest.Pen.Color := ColorToRGB(clGray);
165
ADest.Brush.Color := ColorToRGB($00F0F0F0);
167
// Draws the decorative bars and also the slider button
170
for i := 0 to StepsCount - 1 do
172
// Draw the decorative bars
174
pStart + pHalfStepWidth,
175
lDrawingBottom - 5 - i,
179
ADest.Brush.Style := bsSolid;
180
ADest.Pen.Style := psSolid;
181
ADest.Pen.Color := clBlack;
182
if i <= AStateEx.Position then
183
ADest.Brush.Color := clDkGray
185
ADest.Brush.Color := clWhite;
187
ADest.Rectangle(dRect);
191
if i = AStateEx.Position then
193
ADest.Brush.FPColor := TColorToFPColor(ColorToRGB($006BB6E6));
194
ADest.Brush.Style := bsSolid;
195
ADest.Rectangle(pStart, lDrawingBottom + 1, pStart + 10, lDrawingBottom + 6);
196
ADest.Pen.Color := ColorToRGB($005BA6C6);
197
ADest.RecTangle(pStart, lDrawingBottom + 2, pStart + 10, lDrawingBottom + 7);
198
ADest.Pen.Color := ColorToRGB($006BB6E6);
199
ADest.RecTangle(pStart, lDrawingBottom, pStart + 10, lDrawingBottom + 2);
201
pStart := pStart + pStepWidth;
204
ADest.Pen.Color := ColorToRGB($007BC6F6);
205
ADest.Line(7, lDrawingBottom - 1, ASize.cx - 8, lDrawingBottom - 1);
206
ADest.Line(7, lDrawingBottom + 1, ASize.cx - 8, lDrawingBottom + 1);
207
ADest.Pixels[2, lDrawingBottom - 1] := ADest.Pen.Color;
208
ADest.Pixels[4, lDrawingBottom - 2] := ADest.Pen.Color;
209
ADest.Pixels[2, lDrawingBottom + 1] := ADest.Pen.Color;
210
ADest.Pixels[4, lDrawingBottom + 2] := ADest.Pen.Color;
211
ADest.Pixels[6, lDrawingBottom - 3] := ADest.Pen.Color;
212
ADest.Pixels[6, lDrawingBottom + 3] := ADest.Pen.Color;
213
ADest.Pixels[ASize.cx - 1 - 2, lDrawingBottom - 1] := ADest.Pen.Color;
214
ADest.Pixels[ASize.cx - 1 - 4, lDrawingBottom - 2] := ADest.Pen.Color;
215
ADest.Pixels[ASize.cx - 1 - 2, lDrawingBottom + 1] := ADest.Pen.Color;
216
ADest.Pixels[ASize.cx - 1 - 4, lDrawingBottom + 2] := ADest.Pen.Color;
217
ADest.Pixels[ASize.cx - 1 - 6, lDrawingBottom - 3] := ADest.Pen.Color;
218
ADest.Pixels[ASize.cx - 1 - 6, lDrawingBottom + 3] := ADest.Pen.Color;
222
RegisterDrawer(TCDDrawerExtra1.Create, dsExtra1);