1303 lines
49 KiB
ObjectPascal
1303 lines
49 KiB
ObjectPascal
// SPDX-License-Identifier: LGPL-3.0-linking-exception
|
|
{******************************* CONTRIBUTOR(S) ******************************
|
|
- Edivando S. Santos Brasil | mailedivando@gmail.com
|
|
(Compatibility with delphi VCL 11/2018)
|
|
|
|
***************************** END CONTRIBUTOR(S) *****************************}
|
|
unit BCSamples;
|
|
|
|
{$I bgracontrols.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, Controls, Graphics,
|
|
{$IFDEF FPC}LCLProc, LCLType, LazUTF8,{$ENDIF}
|
|
StdCtrls, BCButton, BCButtonFocus, BCTypes,
|
|
{$IFNDEF FPC}Types, Windows, Sysutils, BGRAGraphics, GraphType, FPImage, {$ENDIF}
|
|
BGRABitmap, BGRABitmapTypes, BGRAGradients, MaterialColors, BCBrightAndContrast;
|
|
|
|
{$IFNDEF FPC}
|
|
type
|
|
TWinControlHack = class(TWinControl);
|
|
{$ENDIF}
|
|
|
|
const
|
|
{Accent Colors}
|
|
acMagenta = TColor($009700FF);
|
|
acPurple = TColor($00FF00A2);
|
|
acTeal = TColor($00A9AB00);
|
|
acLime = TColor($0026BF8C);
|
|
acBrown = TColor($000050A0);
|
|
acPink = TColor($00B871E6);
|
|
acOrange = TColor($000996F0);
|
|
acBlue = TColor($00E2A11B);
|
|
acRed = TColor($000014E5);
|
|
acGreen = TColor($00339933);
|
|
{Facebook Colors}
|
|
fbBlue = TColor($00AA785F);
|
|
fbGreen = TColor($004BA567);
|
|
fbGray = TColor($00F8F8F8);
|
|
{Windows 8 Color Scheme - Background}
|
|
clScheme1_Background = TColor($00252525);
|
|
clScheme2_Background = TColor($00252525);
|
|
clScheme3_Background = TColor($00252525);
|
|
clScheme4_Background = TColor($00252525);
|
|
clScheme5_Background = TColor($0000172E);
|
|
clScheme6_Background = TColor($0000004E);
|
|
clScheme7_Background = TColor($0038004E);
|
|
clScheme8_Background = TColor($004E002D);
|
|
clScheme9_Background = TColor($0068001F);
|
|
clScheme10_Background = TColor($004E1E00);
|
|
clScheme11_Background = TColor($00604D00);
|
|
clScheme12_Background = TColor($00004A00);
|
|
clScheme13_Background = TColor($002A9915);
|
|
clScheme14_Background = TColor($00196CE5);
|
|
clScheme15_Background = TColor($001B1BB8);
|
|
clScheme16_Background = TColor($006C1BB8);
|
|
clScheme17_Background = TColor($00B81B69);
|
|
clScheme18_Background = TColor($00B8581B);
|
|
clScheme19_Background = TColor($00E39C56);
|
|
clScheme20_Background = TColor($00AAAA00);
|
|
clScheme21_Background = TColor($001FBA83);
|
|
clScheme22_Background = TColor($00099DD3);
|
|
clScheme23_Background = TColor($00B764E0);
|
|
clScheme24_Background = TColor($00696969);
|
|
clScheme25_Background = TColor($00696969);
|
|
{Windows 8 Color Scheme - Selection}
|
|
clScheme1_Selection = TColor($0000B3F4);
|
|
clScheme2_Selection = TColor($0000BA78);
|
|
clScheme3_Selection = TColor($00EC7326);
|
|
clScheme4_Selection = TColor($003D11AE);
|
|
clScheme5_Selection = TColor($00002F63);
|
|
clScheme6_Selection = TColor($00001EB0);
|
|
clScheme7_Selection = TColor($004F00C1);
|
|
clScheme8_Selection = TColor($00AC0072);
|
|
clScheme9_Selection = TColor($00B41746);
|
|
clScheme10_Selection = TColor($00C16A00);
|
|
clScheme11_Selection = TColor($00878200);
|
|
clScheme12_Selection = TColor($00009919);
|
|
clScheme13_Selection = TColor($003FC100);
|
|
clScheme14_Selection = TColor($001D98FF);
|
|
clScheme15_Selection = TColor($00122EFF);
|
|
clScheme16_Selection = TColor($00771DFF);
|
|
clScheme17_Selection = TColor($00FF40AA);
|
|
clScheme18_Selection = TColor($00FFAE1F);
|
|
clScheme19_Selection = TColor($00FFC556);
|
|
clScheme20_Selection = TColor($00CCD800);
|
|
clScheme21_Selection = TColor($0000D191);
|
|
clScheme22_Selection = TColor($0000B7E1);
|
|
clScheme23_Selection = TColor($00BC76FF);
|
|
clScheme24_Selection = TColor($00A4A400);
|
|
clScheme25_Selection = TColor($00237DFF);
|
|
|
|
type
|
|
TBCSampleStyle = (ssDefault, ssWindows7, ssWindows7ToolBar, ssOffice2010,
|
|
ssFlashPlayer, ssMacOSXLion, ssWindows8_1, ssWindows8_2, ssWindows8_3,
|
|
ssWindows8_4, ssWindows8_5, ssWindows8_6, ssWindows8_7, ssWindows8_8,
|
|
ssWindows8_9, ssWindows8_10, ssWindows8_11, ssWindows8_12, ssWindows8_13,
|
|
ssWindows8_14, ssWindows8_15, ssWindows8_16, ssWindows8_17, ssWindows8_18,
|
|
ssWindows8_19, ssWindows8_20, ssWindows8_21, ssWindows8_22, ssWindows8_23,
|
|
ssWindows8_24, ssWindows8_25, ssMaterialRed, ssMaterialPink, ssMaterialPurple,
|
|
ssMaterialDeepPurple, ssMaterialIndigo, ssMaterialBlue, ssMaterialLightBlue,
|
|
ssMaterialCyan, ssMaterialTeal, ssMaterialGreen, ssMaterialLightGreen,
|
|
ssMaterialLime, ssMaterialYellow, ssMaterialAmber, ssMaterialOrange,
|
|
ssMaterialDeepOrange, ssMaterialBrown, ssMaterialGrey, ssMaterialBlueGrey);
|
|
|
|
TBCSampleDrawing = (sdDefault, sdFlashPlayerBody, sdFlashPlayerButtonPanel,
|
|
sdWindows7Toolbar, sdiOSBar, sdiOSToolBar, sdiOSBackground,
|
|
sdWindows8_1, sdWindows8_2, sdWindows8_3,
|
|
sdWindows8_4, sdWindows8_5, sdWindows8_6, sdWindows8_7, sdWindows8_8,
|
|
sdWindows8_9, sdWindows8_10, sdWindows8_11, sdWindows8_12, sdWindows8_13,
|
|
sdWindows8_14, sdWindows8_15, sdWindows8_16, sdWindows8_17, sdWindows8_18,
|
|
sdWindows8_19, sdWindows8_20, sdWindows8_21, sdWindows8_22, sdWindows8_23,
|
|
sdWindows8_24, sdWindows8_25);
|
|
|
|
const
|
|
BCSampleStyleStr: array[TBCSampleStyle] of string =
|
|
('Default', 'Windows 7', 'Windows 7 ToolBar', 'Office 2010',
|
|
'Flash Player', 'Mac OSX Lion', 'Windows 8 Scheme 1', 'Windows 8 Scheme 2',
|
|
'Windows 8 Scheme 3', 'Windows 8 Scheme 4', 'Windows 8 Scheme 5'
|
|
, 'Windows 8 Scheme 6', 'Windows 8 Scheme 7', 'Windows 8 Scheme 8'
|
|
, 'Windows 8 Scheme 9', 'Windows 8 Scheme 10', 'Windows 8 Scheme 11'
|
|
, 'Windows 8 Scheme 12', 'Windows 8 Scheme 13', 'Windows 8 Scheme 14'
|
|
, 'Windows 8 Scheme 15', 'Windows 8 Scheme 16', 'Windows 8 Scheme 17'
|
|
, 'Windows 8 Scheme 18', 'Windows 8 Scheme 19', 'Windows 8 Scheme 20'
|
|
, 'Windows 8 Scheme 21', 'Windows 8 Scheme 22', 'Windows 8 Scheme 23'
|
|
, 'Windows 8 Scheme 24', 'Windows 8 Scheme 25', 'Material Red', 'Material Pink',
|
|
'Material Purple', 'Material Deep Purple', 'Material Indigo', 'Material Blue',
|
|
'Material Light Blue', 'Material Cyan', 'Material Teal', 'Material Green',
|
|
'Material Light Green', 'Material Lime', 'Material Yellow', 'Material Amber',
|
|
'Material Orange', 'Material Deep Orange', 'Material Brown', 'Material Grey',
|
|
'Material Blue Grey');
|
|
|
|
BCSampleDrawingStr: array[TBCSampleDrawing] of string =
|
|
('Default', 'Flash Player Body', 'Flash Player Button Panel',
|
|
'Windows 7 ToolBar', 'iOS Bar', 'iOS ToolBar', 'iOS Background',
|
|
'Windows 8 Scheme 1', 'Windows 8 Scheme 2',
|
|
'Windows 8 Scheme 3', 'Windows 8 Scheme 4', 'Windows 8 Scheme 5'
|
|
, 'Windows 8 Scheme 6', 'Windows 8 Scheme 7', 'Windows 8 Scheme 8'
|
|
, 'Windows 8 Scheme 9', 'Windows 8 Scheme 10', 'Windows 8 Scheme 11'
|
|
, 'Windows 8 Scheme 12', 'Windows 8 Scheme 13', 'Windows 8 Scheme 14'
|
|
, 'Windows 8 Scheme 15', 'Windows 8 Scheme 16', 'Windows 8 Scheme 17'
|
|
, 'Windows 8 Scheme 18', 'Windows 8 Scheme 19', 'Windows 8 Scheme 20'
|
|
, 'Windows 8 Scheme 21', 'Windows 8 Scheme 22', 'Windows 8 Scheme 23'
|
|
, 'Windows 8 Scheme 24', 'Windows 8 Scheme 25');
|
|
|
|
function StrToTBCSampleStyle(const s: ansistring): TBCSampleStyle;
|
|
procedure BCSampleStyleStrList(s: TStrings);
|
|
|
|
function StrToTBCSampleDrawing(const s: ansistring): TBCSampleDrawing;
|
|
procedure BCSampleDrawingStrList(s: TStrings);
|
|
|
|
procedure StyleButtons(AControl: TControl; AButton: TBCButton); overload;
|
|
procedure StyleButtons(AControl: TControl; AButton: TBCButtonFocus); overload;
|
|
procedure StyleButtonsSample(AControl: TControl; AStyle: TBCSampleStyle);
|
|
procedure StyleButtonsFocusSample(AControl: TControl; AStyle: TBCSampleStyle);
|
|
|
|
procedure DrawSample(ABitmap: TBGRABitmap; Element: TBCSampleDrawing;
|
|
Align: TAlign = alNone); overload;
|
|
function DrawSample(AWidth, AHeight: integer; Element: TBCSampleDrawing;
|
|
Align: TAlign = alNone): TBGRABitmap; overload;
|
|
procedure DrawItem(Control: TWinControl; Index: integer; ARect: TRect;
|
|
State: TOwnerDrawState; Style: TBCSampleDrawing);
|
|
|
|
{ Buttons }
|
|
procedure BCButtonWindows7(AButton: TBCButton); overload;
|
|
procedure BCButtonWindows7ToolBar(AButton: TBCButton); overload;
|
|
procedure BCButtonOffice2010(AButton: TBCButton); overload;
|
|
procedure BCButtonFlashPlayer(AButton: TBCButton); overload;
|
|
procedure BCButtonMacOSXLion(AButton: TBCButton); overload;
|
|
procedure BCButtonWindows8(AButton: TBCButton; cl1, cl2: TColor; rounding: integer = 1); overload;
|
|
|
|
procedure BCButtonWindows7(AButton: TBCButtonFocus); overload;
|
|
procedure BCButtonWindows7ToolBar(AButton: TBCButtonFocus);overload;
|
|
procedure BCButtonOffice2010(AButton: TBCButtonFocus);overload;
|
|
procedure BCButtonFlashPlayer(AButton: TBCButtonFocus);overload;
|
|
procedure BCButtonMacOSXLion(AButton: TBCButtonFocus);overload;
|
|
procedure BCButtonWindows8(AButton: TBCButtonFocus; cl1, cl2: TColor;
|
|
rounding: integer = 1); overload;
|
|
|
|
{ Drawings }
|
|
procedure DrawFlashPlayerBody(ABitmap: TBGRABitmap);
|
|
procedure DrawFlashPlayerButtonPanel(ABitmap: TBGRABitmap);
|
|
procedure DrawWindows7ToolBar(ABitmap: TBGRABitmap; ADir: TAlign;
|
|
Smooth: boolean = False);
|
|
procedure DrawiOSBar(ABitmap: TBGRABitmap);
|
|
procedure DrawiOSToolBar(ABitmap: TBGRABitmap; Shadow: boolean = True);
|
|
procedure DrawiOSBackground(ABitmap: TBGRABitmap);
|
|
procedure DrawWindows8Background(ABitmap: TBGRABitmap; {%H-}cl1, cl2: TColor);
|
|
|
|
implementation
|
|
|
|
function StrToTBCSampleStyle(const s: ansistring): TBCSampleStyle;
|
|
var
|
|
ss: TBCSampleStyle;
|
|
ls: ansistring;
|
|
begin
|
|
Result := ssDefault;
|
|
ls := {$IFDEF FPC}UTF8LowerCase{$ELSE}LowerCase{$ENDIF}(s);
|
|
for ss := low(TBCSampleStyle) to high(TBCSampleStyle) do
|
|
if ls = {$IFDEF FPC}UTF8LowerCase{$ELSE}LowerCase{$ENDIF}(BCSampleStyleStr[ss]) then
|
|
begin
|
|
Result := ss;
|
|
break;
|
|
end;
|
|
end;
|
|
|
|
procedure BCSampleStyleStrList(s: TStrings);
|
|
var
|
|
ss: TBCSampleStyle;
|
|
begin
|
|
for ss := low(TBCSampleStyle) to high(TBCSampleStyle) do
|
|
s.Add(BCSampleStyleStr[ss]);
|
|
end;
|
|
|
|
procedure StyleButtons(AControl: TControl; AButton: TBCButton);
|
|
var
|
|
i: integer;
|
|
WinControl: TWinControl;
|
|
begin
|
|
if AControl is TBCButton then
|
|
with AControl as TBCButton do
|
|
begin
|
|
// Those are recomended properties to keep unchanged
|
|
AButton.Glyph := Glyph;
|
|
AButton.GlyphMargin := GlyphMargin;
|
|
AButton.StaticButton := StaticButton;
|
|
AButton.Down := Down;
|
|
AButton.Style := Style;
|
|
Assign(AButton);
|
|
end;
|
|
if AControl is TWinControl then
|
|
begin
|
|
WinControl := TWinControl(AControl);
|
|
if WinControl.ControlCount = 0 then
|
|
exit;
|
|
for i := 0 to WinControl.ControlCount - 1 do
|
|
StyleButtons(WinControl.Controls[i], AButton);
|
|
end;
|
|
end;
|
|
|
|
procedure StyleButtons(AControl: TControl; AButton: TBCButtonFocus);
|
|
var
|
|
i: integer;
|
|
WinControl: TWinControl;
|
|
begin
|
|
if AControl is TBCButtonFocus then
|
|
with AControl as TBCButtonFocus do
|
|
begin
|
|
// Those are recomended properties to keep unchanged
|
|
AButton.Glyph := Glyph;
|
|
AButton.GlyphMargin := GlyphMargin;
|
|
AButton.StaticButton := StaticButton;
|
|
AButton.Down := Down;
|
|
AButton.Style := Style;
|
|
Assign(AButton);
|
|
end;
|
|
if AControl is TWinControl then
|
|
begin
|
|
WinControl := TWinControl(AControl);
|
|
if WinControl.ControlCount = 0 then
|
|
exit;
|
|
for i := 0 to WinControl.ControlCount - 1 do
|
|
StyleButtons(WinControl.Controls[i], AButton);
|
|
end;
|
|
end;
|
|
|
|
procedure StyleButtonsSample(AControl: TControl; AStyle: TBCSampleStyle);
|
|
var
|
|
temp: TBCButton;
|
|
begin
|
|
temp := TBCButton.Create(nil);
|
|
case AStyle of
|
|
ssWindows7: BCButtonWindows7(temp);
|
|
ssWindows7ToolBar: BCButtonWindows7ToolBar(temp);
|
|
ssOffice2010: BCButtonOffice2010(temp);
|
|
ssFlashPlayer: BCButtonFlashPlayer(temp);
|
|
ssMacOSXLion: BCButtonMacOSXLion(temp);
|
|
ssWindows8_1: BCButtonWindows8(temp, clScheme1_Background, clScheme1_Selection);
|
|
ssWindows8_2: BCButtonWindows8(temp, clScheme2_Background, clScheme2_Selection);
|
|
ssWindows8_3: BCButtonWindows8(temp, clScheme3_Background, clScheme3_Selection);
|
|
ssWindows8_4: BCButtonWindows8(temp, clScheme4_Background, clScheme4_Selection);
|
|
ssWindows8_5: BCButtonWindows8(temp, clScheme5_Background, clScheme5_Selection);
|
|
ssWindows8_6: BCButtonWindows8(temp, clScheme6_Background, clScheme6_Selection);
|
|
ssWindows8_7: BCButtonWindows8(temp, clScheme7_Background, clScheme7_Selection);
|
|
ssWindows8_8: BCButtonWindows8(temp, clScheme8_Background, clScheme8_Selection);
|
|
ssWindows8_9: BCButtonWindows8(temp, clScheme9_Background, clScheme9_Selection);
|
|
ssWindows8_10: BCButtonWindows8(temp, clScheme10_Background, clScheme10_Selection);
|
|
ssWindows8_11: BCButtonWindows8(temp, clScheme11_Background, clScheme11_Selection);
|
|
ssWindows8_12: BCButtonWindows8(temp, clScheme12_Background, clScheme12_Selection);
|
|
ssWindows8_13: BCButtonWindows8(temp, clScheme13_Background, clScheme13_Selection);
|
|
ssWindows8_14: BCButtonWindows8(temp, clScheme14_Background, clScheme14_Selection);
|
|
ssWindows8_15: BCButtonWindows8(temp, clScheme15_Background, clScheme15_Selection);
|
|
ssWindows8_16: BCButtonWindows8(temp, clScheme16_Background, clScheme16_Selection);
|
|
ssWindows8_17: BCButtonWindows8(temp, clScheme17_Background, clScheme17_Selection);
|
|
ssWindows8_18: BCButtonWindows8(temp, clScheme18_Background, clScheme18_Selection);
|
|
ssWindows8_19: BCButtonWindows8(temp, clScheme19_Background, clScheme19_Selection);
|
|
ssWindows8_20: BCButtonWindows8(temp, clScheme20_Background, clScheme20_Selection);
|
|
ssWindows8_21: BCButtonWindows8(temp, clScheme21_Background, clScheme21_Selection);
|
|
ssWindows8_22: BCButtonWindows8(temp, clScheme22_Background, clScheme22_Selection);
|
|
ssWindows8_23: BCButtonWindows8(temp, clScheme23_Background, clScheme23_Selection);
|
|
ssWindows8_24: BCButtonWindows8(temp, clScheme24_Background, clScheme24_Selection);
|
|
ssWindows8_25: BCButtonWindows8(temp, clScheme25_Background, clScheme25_Selection);
|
|
ssMaterialRed: BCButtonWindows8(temp, MaterialRed.M500, MaterialRed.M300, 5);
|
|
ssMaterialPink: BCButtonWindows8(temp, MaterialPink.M500, MaterialPink.M300, 5);
|
|
ssMaterialPurple: BCButtonWindows8(temp, MaterialPurple.M500,
|
|
MaterialPurple.M300, 5);
|
|
ssMaterialDeepPurple: BCButtonWindows8(temp, MaterialDeepPurple.M500,
|
|
MaterialDeepPurple.M300, 5);
|
|
ssMaterialIndigo: BCButtonWindows8(temp, MaterialIndigo.M500,
|
|
MaterialIndigo.M300, 5);
|
|
ssMaterialBlue: BCButtonWindows8(temp, MaterialBlue.M500, MaterialBlue.M300, 5);
|
|
ssMaterialLightBlue: BCButtonWindows8(temp, MaterialLightBlue.M500,
|
|
MaterialLightBlue.M300, 5);
|
|
ssMaterialCyan: BCButtonWindows8(temp, MaterialCyan.M500, MaterialCyan.M300, 5);
|
|
ssMaterialTeal: BCButtonWindows8(temp, MaterialTeal.M500, MaterialTeal.M300, 5);
|
|
ssMaterialGreen: BCButtonWindows8(temp, MaterialGreen.M500, MaterialGreen.M300, 5);
|
|
ssMaterialLightGreen: BCButtonWindows8(temp, MaterialLightGreen.M500,
|
|
MaterialLightGreen.M300, 5);
|
|
ssMaterialLime: BCButtonWindows8(temp, MaterialLime.M500, MaterialLime.M300, 5);
|
|
ssMaterialYellow: BCButtonWindows8(temp, MaterialYellow.M500,
|
|
MaterialYellow.M300, 5);
|
|
ssMaterialAmber: BCButtonWindows8(temp, MaterialAmber.M500, MaterialAmber.M300, 5);
|
|
ssMaterialOrange: BCButtonWindows8(temp, MaterialOrange.M500,
|
|
MaterialOrange.M300, 5);
|
|
ssMaterialDeepOrange: BCButtonWindows8(temp, MaterialDeepOrange.M500,
|
|
MaterialDeepOrange.M300, 5);
|
|
ssMaterialBrown: BCButtonWindows8(temp, MaterialBrown.M500, MaterialBrown.M300, 5);
|
|
ssMaterialGrey: BCButtonWindows8(temp, MaterialGrey.M500, MaterialGrey.M300, 5);
|
|
ssMaterialBlueGrey: BCButtonWindows8(temp, MaterialBlueGrey.M500,
|
|
MaterialBlueGrey.M300, 5);
|
|
end;
|
|
StyleButtons(AControl, temp);
|
|
temp.Free;
|
|
end;
|
|
|
|
procedure StyleButtonsFocusSample(AControl: TControl; AStyle: TBCSampleStyle);
|
|
var
|
|
temp: TBCButtonFocus;
|
|
begin
|
|
temp := TBCButtonFocus.Create(nil);
|
|
case AStyle of
|
|
ssWindows7: BCButtonWindows7(temp);
|
|
ssWindows7ToolBar: BCButtonWindows7ToolBar(temp);
|
|
ssOffice2010: BCButtonOffice2010(temp);
|
|
ssFlashPlayer: BCButtonFlashPlayer(temp);
|
|
ssMacOSXLion: BCButtonMacOSXLion(temp);
|
|
ssWindows8_1: BCButtonWindows8(temp, clScheme1_Background, clScheme1_Selection);
|
|
ssWindows8_2: BCButtonWindows8(temp, clScheme2_Background, clScheme2_Selection);
|
|
ssWindows8_3: BCButtonWindows8(temp, clScheme3_Background, clScheme3_Selection);
|
|
ssWindows8_4: BCButtonWindows8(temp, clScheme4_Background, clScheme4_Selection);
|
|
ssWindows8_5: BCButtonWindows8(temp, clScheme5_Background, clScheme5_Selection);
|
|
ssWindows8_6: BCButtonWindows8(temp, clScheme6_Background, clScheme6_Selection);
|
|
ssWindows8_7: BCButtonWindows8(temp, clScheme7_Background, clScheme7_Selection);
|
|
ssWindows8_8: BCButtonWindows8(temp, clScheme8_Background, clScheme8_Selection);
|
|
ssWindows8_9: BCButtonWindows8(temp, clScheme9_Background, clScheme9_Selection);
|
|
ssWindows8_10: BCButtonWindows8(temp, clScheme10_Background, clScheme10_Selection);
|
|
ssWindows8_11: BCButtonWindows8(temp, clScheme11_Background, clScheme11_Selection);
|
|
ssWindows8_12: BCButtonWindows8(temp, clScheme12_Background, clScheme12_Selection);
|
|
ssWindows8_13: BCButtonWindows8(temp, clScheme13_Background, clScheme13_Selection);
|
|
ssWindows8_14: BCButtonWindows8(temp, clScheme14_Background, clScheme14_Selection);
|
|
ssWindows8_15: BCButtonWindows8(temp, clScheme15_Background, clScheme15_Selection);
|
|
ssWindows8_16: BCButtonWindows8(temp, clScheme16_Background, clScheme16_Selection);
|
|
ssWindows8_17: BCButtonWindows8(temp, clScheme17_Background, clScheme17_Selection);
|
|
ssWindows8_18: BCButtonWindows8(temp, clScheme18_Background, clScheme18_Selection);
|
|
ssWindows8_19: BCButtonWindows8(temp, clScheme19_Background, clScheme19_Selection);
|
|
ssWindows8_20: BCButtonWindows8(temp, clScheme20_Background, clScheme20_Selection);
|
|
ssWindows8_21: BCButtonWindows8(temp, clScheme21_Background, clScheme21_Selection);
|
|
ssWindows8_22: BCButtonWindows8(temp, clScheme22_Background, clScheme22_Selection);
|
|
ssWindows8_23: BCButtonWindows8(temp, clScheme23_Background, clScheme23_Selection);
|
|
ssWindows8_24: BCButtonWindows8(temp, clScheme24_Background, clScheme24_Selection);
|
|
ssWindows8_25: BCButtonWindows8(temp, clScheme25_Background, clScheme25_Selection);
|
|
ssMaterialRed: BCButtonWindows8(temp, MaterialRed.M500, MaterialRed.M300, 5);
|
|
ssMaterialPink: BCButtonWindows8(temp, MaterialPink.M500, MaterialPink.M300, 5);
|
|
ssMaterialPurple: BCButtonWindows8(temp, MaterialPurple.M500,
|
|
MaterialPurple.M300, 5);
|
|
ssMaterialDeepPurple: BCButtonWindows8(temp, MaterialDeepPurple.M500,
|
|
MaterialDeepPurple.M300, 5);
|
|
ssMaterialIndigo: BCButtonWindows8(temp, MaterialIndigo.M500,
|
|
MaterialIndigo.M300, 5);
|
|
ssMaterialBlue: BCButtonWindows8(temp, MaterialBlue.M500, MaterialBlue.M300, 5);
|
|
ssMaterialLightBlue: BCButtonWindows8(temp, MaterialLightBlue.M500,
|
|
MaterialLightBlue.M300, 5);
|
|
ssMaterialCyan: BCButtonWindows8(temp, MaterialCyan.M500, MaterialCyan.M300, 5);
|
|
ssMaterialTeal: BCButtonWindows8(temp, MaterialTeal.M500, MaterialTeal.M300, 5);
|
|
ssMaterialGreen: BCButtonWindows8(temp, MaterialGreen.M500, MaterialGreen.M300, 5);
|
|
ssMaterialLightGreen: BCButtonWindows8(temp, MaterialLightGreen.M500,
|
|
MaterialLightGreen.M300, 5);
|
|
ssMaterialLime: BCButtonWindows8(temp, MaterialLime.M500, MaterialLime.M300, 5);
|
|
ssMaterialYellow: BCButtonWindows8(temp, MaterialYellow.M500,
|
|
MaterialYellow.M300, 5);
|
|
ssMaterialAmber: BCButtonWindows8(temp, MaterialAmber.M500, MaterialAmber.M300, 5);
|
|
ssMaterialOrange: BCButtonWindows8(temp, MaterialOrange.M500,
|
|
MaterialOrange.M300, 5);
|
|
ssMaterialDeepOrange: BCButtonWindows8(temp, MaterialDeepOrange.M500,
|
|
MaterialDeepOrange.M300, 5);
|
|
ssMaterialBrown: BCButtonWindows8(temp, MaterialBrown.M500, MaterialBrown.M300, 5);
|
|
ssMaterialGrey: BCButtonWindows8(temp, MaterialGrey.M500, MaterialGrey.M300, 5);
|
|
ssMaterialBlueGrey: BCButtonWindows8(temp, MaterialBlueGrey.M500,
|
|
MaterialBlueGrey.M300, 5);
|
|
end;
|
|
StyleButtons(AControl, temp);
|
|
temp.Free;
|
|
end;
|
|
|
|
procedure DrawItem(Control: TWinControl; Index: integer; ARect: TRect;
|
|
State: TOwnerDrawState; Style: TBCSampleDrawing);
|
|
var
|
|
temp: TBGRABitmap;
|
|
str: string;
|
|
begin
|
|
if Control is TListBox then
|
|
str := TListBox(Control).Items[Index]
|
|
else if Control is TComboBox then
|
|
str := TComboBox(Control).Items[Index];
|
|
|
|
temp := TBGRABitmap.Create(ARect.Right - ARect.Left, ARect.Bottom -
|
|
ARect.Top, {$IFNDEF FPC}TWinControlHack(Control).{$ELSE}Control.{$ENDIF}Color);
|
|
|
|
temp.FontAntialias := True;
|
|
temp.FontHeight := 0;
|
|
temp.FontQuality := fqSystemClearType;
|
|
|
|
if odSelected in State then
|
|
DrawSample(temp, Style, alNone);
|
|
|
|
temp.TextOut(2, 0, {%H-}str, BGRABlack);
|
|
|
|
if Control is TListBox then
|
|
temp.Draw(TListBox(Control).Canvas, ARect, False)
|
|
else if Control is TComboBox then
|
|
temp.Draw(TComboBox(Control).Canvas, ARect, False);
|
|
|
|
temp.Free;
|
|
end;
|
|
|
|
procedure BCButtonWindows7(AButton: TBCButton);
|
|
begin
|
|
AButton.Rounding.RoundX := 3;
|
|
AButton.Rounding.RoundY := 3;
|
|
AButton.RoundingDropDown.Assign(AButton.Rounding);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1EndPercent := 50;
|
|
Background.Gradient2.Point1XPercent := 0;
|
|
Background.Gradient2.Point1YPercent := 0;
|
|
Background.Gradient2.Point2YPercent := 100;
|
|
Background.Gradient2.GradientType := gtLinear;
|
|
Border.Color := RGBToColor(112, 112, 112);
|
|
Border.LightWidth := 1;
|
|
Border.LightOpacity := 175;
|
|
Border.Style := bboSolid;
|
|
FontEx.Color := clBlack;
|
|
FontEx.Shadow := False;
|
|
FontEx.Style := [];
|
|
end;
|
|
|
|
AButton.StateHover.Assign(AButton.StateNormal);
|
|
AButton.StateClicked.Assign(AButton.StateNormal);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(242, 242, 242);
|
|
Background.Gradient1.EndColor := RGBToColor(235, 235, 235);
|
|
Background.Gradient2.StartColor := RGBToColor(221, 221, 221);
|
|
Background.Gradient2.EndColor := RGBToColor(207, 207, 207);
|
|
end;
|
|
|
|
with AButton.StateHover do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(234, 246, 253);
|
|
Background.Gradient1.EndColor := RGBToColor(217, 240, 252);
|
|
Background.Gradient2.StartColor := RGBToColor(190, 230, 253);
|
|
Background.Gradient2.EndColor := RGBToColor(167, 217, 245);
|
|
Border.Color := RGBToColor(60, 127, 177);
|
|
end;
|
|
|
|
with AButton.StateClicked do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(229, 244, 252);
|
|
Background.Gradient1.EndColor := RGBToColor(196, 229, 246);
|
|
Background.Gradient2.StartColor := RGBToColor(152, 209, 239);
|
|
Background.Gradient2.EndColor := RGBToColor(104, 179, 219);
|
|
Background.Gradient1EndPercent := 55;
|
|
Border.Color := RGBToColor(44, 98, 139);
|
|
Border.LightOpacity := 100;
|
|
Border.LightColor := clBlack;
|
|
end;
|
|
end;
|
|
|
|
procedure BCButtonWindows7ToolBar(AButton: TBCButton);
|
|
begin
|
|
AButton.Rounding.RoundX := 2;
|
|
AButton.Rounding.RoundY := 2;
|
|
AButton.RoundingDropDown.Assign(AButton.Rounding);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1EndPercent := 50;
|
|
Background.Gradient2.Point1XPercent := 0;
|
|
Background.Gradient2.Point1YPercent := 0;
|
|
Background.Gradient2.Point2YPercent := 100;
|
|
Background.Gradient2.GradientType := gtLinear;
|
|
Border.Color := RGBToColor(187, 202, 219);
|
|
Border.LightWidth := 1;
|
|
Border.LightOpacity := 200;
|
|
Border.Style := bboSolid;
|
|
FontEx.Color := RGBToColor(30, 57, 91);
|
|
FontEx.Shadow := False;
|
|
FontEx.Style := [];
|
|
end;
|
|
|
|
AButton.StateHover.Assign(AButton.StateNormal);
|
|
AButton.StateClicked.Assign(AButton.StateNormal);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(245, 250, 255);
|
|
Background.Gradient1.EndColor := RGBToColor(230, 240, 250);
|
|
Background.Gradient2.StartColor := RGBToColor(220, 230, 244);
|
|
Background.Gradient2.EndColor := RGBToColor(221, 233, 247);
|
|
end;
|
|
|
|
with AButton.StateHover do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(248, 251, 254);
|
|
Background.Gradient1.EndColor := RGBToColor(237, 242, 250);
|
|
Background.Gradient2.StartColor := RGBToColor(215, 228, 244);
|
|
Background.Gradient2.EndColor := RGBToColor(193, 210, 232);
|
|
end;
|
|
|
|
with AButton.StateClicked do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(226, 236, 245);
|
|
Background.Gradient1.EndColor := RGBToColor(216, 228, 241);
|
|
Background.Gradient2.StartColor := RGBToColor(207, 219, 236);
|
|
Background.Gradient2.EndColor := RGBToColor(207, 220, 237);
|
|
end;
|
|
end;
|
|
|
|
procedure BCButtonOffice2010(AButton: TBCButton);
|
|
begin
|
|
AButton.Rounding.RoundX := 3;
|
|
AButton.Rounding.RoundY := 3;
|
|
AButton.RoundingDropDown.Assign(AButton.Rounding);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1EndPercent := 50;
|
|
Background.Gradient2.Point1XPercent := 0;
|
|
Background.Gradient2.Point1YPercent := 0;
|
|
Background.Gradient2.Point2YPercent := 100;
|
|
Background.Gradient2.GradientType := gtLinear;
|
|
Border.Color := RGBToColor(207, 208, 210);
|
|
Border.LightWidth := 1;
|
|
Border.LightOpacity := 175;
|
|
Border.Style := bboSolid;
|
|
FontEx.Color := clBlack;
|
|
FontEx.Shadow := False;
|
|
FontEx.Style := [];
|
|
end;
|
|
|
|
AButton.StateHover.Assign(AButton.StateNormal);
|
|
AButton.StateClicked.Assign(AButton.StateNormal);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(255, 255, 255);
|
|
Background.Gradient1.EndColor := RGBToColor(237, 239, 241);
|
|
Background.Gradient1EndPercent := 100;
|
|
end;
|
|
|
|
with AButton.StateHover do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(254, 241, 189);
|
|
Background.Gradient1.EndColor := RGBToColor(254, 228, 134);
|
|
Background.Gradient2.StartColor := RGBToColor(254, 228, 134);
|
|
Background.Gradient2.EndColor := RGBToColor(254, 248, 196);
|
|
Border.Color := RGBToColor(244, 210, 81);
|
|
end;
|
|
|
|
with AButton.StateClicked do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(255, 229, 117);
|
|
Background.Gradient1.EndColor := RGBToColor(255, 216, 107);
|
|
Background.Gradient2.StartColor := RGBToColor(255, 216, 107);
|
|
Background.Gradient2.EndColor := RGBToColor(255, 239, 129);
|
|
Border.Color := RGBToColor(194, 161, 63);
|
|
Border.LightWidth := 0;
|
|
end;
|
|
end;
|
|
|
|
procedure BCButtonFlashPlayer(AButton: TBCButton);
|
|
begin
|
|
AButton.Rounding.RoundX := 1;
|
|
AButton.Rounding.RoundY := 1;
|
|
AButton.RoundingDropDown.Assign(AButton.Rounding);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1EndPercent := 50;
|
|
Background.Gradient2.Point1XPercent := 0;
|
|
Background.Gradient2.Point1YPercent := 0;
|
|
Background.Gradient2.Point2YPercent := 100;
|
|
Background.Gradient2.GradientType := gtLinear;
|
|
Border.Color := RGBToColor(24, 24, 24);
|
|
Border.LightWidth := 1;
|
|
Border.LightOpacity := 20;
|
|
Border.Style := bboSolid;
|
|
FontEx.Color := clWhite;
|
|
FontEx.Shadow := True;
|
|
FontEx.ShadowRadius := 1;
|
|
FontEx.ShadowOffsetX := 1;
|
|
FontEx.ShadowOffsetY := 1;
|
|
FontEx.Style := [];
|
|
end;
|
|
|
|
AButton.StateHover.Assign(AButton.StateNormal);
|
|
AButton.StateClicked.Assign(AButton.StateNormal);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(104, 104, 104);
|
|
Background.Gradient1.EndColor := RGBToColor(104, 104, 104);
|
|
Background.Gradient2.StartColor := RGBToColor(103, 103, 103);
|
|
Background.Gradient2.EndColor := RGBToColor(71, 71, 71);
|
|
end;
|
|
|
|
with AButton.StateHover do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(118, 118, 118);
|
|
Background.Gradient1.EndColor := RGBToColor(118, 118, 118);
|
|
Background.Gradient2.StartColor := RGBToColor(117, 117, 117);
|
|
Background.Gradient2.EndColor := RGBToColor(81, 81, 81);
|
|
Border.Color := RGBToColor(24, 24, 24);
|
|
end;
|
|
|
|
with AButton.StateClicked do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(92, 92, 92);
|
|
Background.Gradient1.EndColor := RGBToColor(92, 92, 92);
|
|
Background.Gradient2.StartColor := RGBToColor(91, 91, 91);
|
|
Background.Gradient2.EndColor := RGBToColor(62, 62, 62);
|
|
Background.Gradient1EndPercent := 55;
|
|
Border.Color := RGBToColor(24, 24, 24);
|
|
end;
|
|
end;
|
|
|
|
procedure BCButtonMacOSXLion(AButton: TBCButton);
|
|
begin
|
|
AButton.Rounding.RoundX := 3;
|
|
AButton.Rounding.RoundY := 3;
|
|
AButton.RoundingDropDown.Assign(AButton.Rounding);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1EndPercent := 50;
|
|
Background.Gradient2.Point1XPercent := 0;
|
|
Background.Gradient2.Point1YPercent := 0;
|
|
Background.Gradient2.Point2YPercent := 100;
|
|
Background.Gradient2.GradientType := gtLinear;
|
|
Border.Color := RGBToColor(154, 154, 154);
|
|
Border.LightWidth := 1;
|
|
Border.LightOpacity := 175;
|
|
Border.Style := bboSolid;
|
|
FontEx.Color := clBlack;
|
|
FontEx.Shadow := False;
|
|
FontEx.Style := [];
|
|
end;
|
|
|
|
AButton.StateHover.Assign(AButton.StateNormal);
|
|
AButton.StateClicked.Assign(AButton.StateNormal);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(255, 255, 255);
|
|
Background.Gradient1.EndColor := RGBToColor(243, 243, 243);
|
|
Background.Gradient2.StartColor := RGBToColor(236, 236, 236);
|
|
Background.Gradient2.EndColor := RGBToColor(235, 235, 235);
|
|
end;
|
|
|
|
with AButton.StateHover do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(204, 229, 252);
|
|
Background.Gradient1.EndColor := RGBToColor(161, 209, 249);
|
|
Background.Gradient2.StartColor := RGBToColor(143, 202, 251);
|
|
Background.Gradient2.EndColor := RGBToColor(207, 245, 253);
|
|
Border.Color := RGBToColor(86, 87, 143);
|
|
end;
|
|
|
|
with AButton.StateClicked do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(144, 195, 241);
|
|
Background.Gradient1.EndColor := RGBToColor(113, 180, 239);
|
|
Background.Gradient2.StartColor := RGBToColor(97, 173, 240);
|
|
Background.Gradient2.EndColor := RGBToColor(147, 206, 241);
|
|
Background.Gradient1EndPercent := 55;
|
|
Border.Color := RGBToColor(86, 87, 143);
|
|
Border.LightWidth := 0;
|
|
end;
|
|
end;
|
|
|
|
procedure BCButtonWindows8(AButton: TBCButton; cl1, cl2: TColor; rounding: integer = 1);
|
|
begin
|
|
AButton.Rounding.RoundX := rounding;
|
|
AButton.Rounding.RoundY := rounding;
|
|
AButton.RoundingDropDown.Assign(AButton.Rounding);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Style := bbsColor;
|
|
Background.Color := cl1;
|
|
Border.Style := bboSolid;
|
|
Border.Width := 1;
|
|
Border.Color := cl1;
|
|
Border.LightWidth := 0;
|
|
Border.LightOpacity := 255;
|
|
Border.Style := bboSolid;
|
|
FontEx.Color := GetContrastColor(cl1);
|
|
FontEx.Shadow := False;
|
|
FontEx.Style := [];
|
|
end;
|
|
|
|
AButton.StateHover.Assign(AButton.StateNormal);
|
|
AButton.StateClicked.Assign(AButton.StateNormal);
|
|
|
|
with AButton.StateHover do
|
|
begin
|
|
Background.Color := cl2;
|
|
Border.Color := cl2;
|
|
end;
|
|
|
|
with AButton.StateClicked do
|
|
begin
|
|
Background.Color := cl2;
|
|
Border.Color := cl2;
|
|
end;
|
|
end;
|
|
|
|
procedure BCButtonWindows7(AButton: TBCButtonFocus);
|
|
begin
|
|
AButton.Rounding.RoundX := 3;
|
|
AButton.Rounding.RoundY := 3;
|
|
AButton.RoundingDropDown.Assign(AButton.Rounding);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1EndPercent := 50;
|
|
Background.Gradient2.Point1XPercent := 0;
|
|
Background.Gradient2.Point1YPercent := 0;
|
|
Background.Gradient2.Point2YPercent := 100;
|
|
Background.Gradient2.GradientType := gtLinear;
|
|
Border.Color := RGBToColor(112, 112, 112);
|
|
Border.LightWidth := 1;
|
|
Border.LightOpacity := 175;
|
|
Border.Style := bboSolid;
|
|
FontEx.Color := clBlack;
|
|
FontEx.Shadow := False;
|
|
FontEx.Style := [];
|
|
end;
|
|
|
|
AButton.StateHover.Assign(AButton.StateNormal);
|
|
AButton.StateClicked.Assign(AButton.StateNormal);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(242, 242, 242);
|
|
Background.Gradient1.EndColor := RGBToColor(235, 235, 235);
|
|
Background.Gradient2.StartColor := RGBToColor(221, 221, 221);
|
|
Background.Gradient2.EndColor := RGBToColor(207, 207, 207);
|
|
end;
|
|
|
|
with AButton.StateHover do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(234, 246, 253);
|
|
Background.Gradient1.EndColor := RGBToColor(217, 240, 252);
|
|
Background.Gradient2.StartColor := RGBToColor(190, 230, 253);
|
|
Background.Gradient2.EndColor := RGBToColor(167, 217, 245);
|
|
Border.Color := RGBToColor(60, 127, 177);
|
|
end;
|
|
|
|
with AButton.StateClicked do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(229, 244, 252);
|
|
Background.Gradient1.EndColor := RGBToColor(196, 229, 246);
|
|
Background.Gradient2.StartColor := RGBToColor(152, 209, 239);
|
|
Background.Gradient2.EndColor := RGBToColor(104, 179, 219);
|
|
Background.Gradient1EndPercent := 55;
|
|
Border.Color := RGBToColor(44, 98, 139);
|
|
Border.LightOpacity := 100;
|
|
Border.LightColor := clBlack;
|
|
end;
|
|
end;
|
|
|
|
procedure BCButtonWindows7ToolBar(AButton: TBCButtonFocus);
|
|
begin
|
|
AButton.Rounding.RoundX := 2;
|
|
AButton.Rounding.RoundY := 2;
|
|
AButton.RoundingDropDown.Assign(AButton.Rounding);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1EndPercent := 50;
|
|
Background.Gradient2.Point1XPercent := 0;
|
|
Background.Gradient2.Point1YPercent := 0;
|
|
Background.Gradient2.Point2YPercent := 100;
|
|
Background.Gradient2.GradientType := gtLinear;
|
|
Border.Color := RGBToColor(187, 202, 219);
|
|
Border.LightWidth := 1;
|
|
Border.LightOpacity := 200;
|
|
Border.Style := bboSolid;
|
|
FontEx.Color := RGBToColor(30, 57, 91);
|
|
FontEx.Shadow := False;
|
|
FontEx.Style := [];
|
|
end;
|
|
|
|
AButton.StateHover.Assign(AButton.StateNormal);
|
|
AButton.StateClicked.Assign(AButton.StateNormal);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(245, 250, 255);
|
|
Background.Gradient1.EndColor := RGBToColor(230, 240, 250);
|
|
Background.Gradient2.StartColor := RGBToColor(220, 230, 244);
|
|
Background.Gradient2.EndColor := RGBToColor(221, 233, 247);
|
|
end;
|
|
|
|
with AButton.StateHover do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(248, 251, 254);
|
|
Background.Gradient1.EndColor := RGBToColor(237, 242, 250);
|
|
Background.Gradient2.StartColor := RGBToColor(215, 228, 244);
|
|
Background.Gradient2.EndColor := RGBToColor(193, 210, 232);
|
|
end;
|
|
|
|
with AButton.StateClicked do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(226, 236, 245);
|
|
Background.Gradient1.EndColor := RGBToColor(216, 228, 241);
|
|
Background.Gradient2.StartColor := RGBToColor(207, 219, 236);
|
|
Background.Gradient2.EndColor := RGBToColor(207, 220, 237);
|
|
end;
|
|
end;
|
|
|
|
procedure BCButtonOffice2010(AButton: TBCButtonFocus);
|
|
begin
|
|
AButton.Rounding.RoundX := 3;
|
|
AButton.Rounding.RoundY := 3;
|
|
AButton.RoundingDropDown.Assign(AButton.Rounding);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1EndPercent := 50;
|
|
Background.Gradient2.Point1XPercent := 0;
|
|
Background.Gradient2.Point1YPercent := 0;
|
|
Background.Gradient2.Point2YPercent := 100;
|
|
Background.Gradient2.GradientType := gtLinear;
|
|
Border.Color := RGBToColor(207, 208, 210);
|
|
Border.LightWidth := 1;
|
|
Border.LightOpacity := 175;
|
|
Border.Style := bboSolid;
|
|
FontEx.Color := clBlack;
|
|
FontEx.Shadow := False;
|
|
FontEx.Style := [];
|
|
end;
|
|
|
|
AButton.StateHover.Assign(AButton.StateNormal);
|
|
AButton.StateClicked.Assign(AButton.StateNormal);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(255, 255, 255);
|
|
Background.Gradient1.EndColor := RGBToColor(237, 239, 241);
|
|
Background.Gradient1EndPercent := 100;
|
|
end;
|
|
|
|
with AButton.StateHover do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(254, 241, 189);
|
|
Background.Gradient1.EndColor := RGBToColor(254, 228, 134);
|
|
Background.Gradient2.StartColor := RGBToColor(254, 228, 134);
|
|
Background.Gradient2.EndColor := RGBToColor(254, 248, 196);
|
|
Border.Color := RGBToColor(244, 210, 81);
|
|
end;
|
|
|
|
with AButton.StateClicked do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(255, 229, 117);
|
|
Background.Gradient1.EndColor := RGBToColor(255, 216, 107);
|
|
Background.Gradient2.StartColor := RGBToColor(255, 216, 107);
|
|
Background.Gradient2.EndColor := RGBToColor(255, 239, 129);
|
|
Border.Color := RGBToColor(194, 161, 63);
|
|
Border.LightWidth := 0;
|
|
end;
|
|
end;
|
|
|
|
procedure BCButtonFlashPlayer(AButton: TBCButtonFocus);
|
|
begin
|
|
AButton.Rounding.RoundX := 1;
|
|
AButton.Rounding.RoundY := 1;
|
|
AButton.RoundingDropDown.Assign(AButton.Rounding);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1EndPercent := 50;
|
|
Background.Gradient2.Point1XPercent := 0;
|
|
Background.Gradient2.Point1YPercent := 0;
|
|
Background.Gradient2.Point2YPercent := 100;
|
|
Background.Gradient2.GradientType := gtLinear;
|
|
Border.Color := RGBToColor(24, 24, 24);
|
|
Border.LightWidth := 1;
|
|
Border.LightOpacity := 20;
|
|
Border.Style := bboSolid;
|
|
FontEx.Color := clWhite;
|
|
FontEx.Shadow := True;
|
|
FontEx.ShadowRadius := 1;
|
|
FontEx.ShadowOffsetX := 1;
|
|
FontEx.ShadowOffsetY := 1;
|
|
FontEx.Style := [];
|
|
end;
|
|
|
|
AButton.StateHover.Assign(AButton.StateNormal);
|
|
AButton.StateClicked.Assign(AButton.StateNormal);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(104, 104, 104);
|
|
Background.Gradient1.EndColor := RGBToColor(104, 104, 104);
|
|
Background.Gradient2.StartColor := RGBToColor(103, 103, 103);
|
|
Background.Gradient2.EndColor := RGBToColor(71, 71, 71);
|
|
end;
|
|
|
|
with AButton.StateHover do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(118, 118, 118);
|
|
Background.Gradient1.EndColor := RGBToColor(118, 118, 118);
|
|
Background.Gradient2.StartColor := RGBToColor(117, 117, 117);
|
|
Background.Gradient2.EndColor := RGBToColor(81, 81, 81);
|
|
Border.Color := RGBToColor(24, 24, 24);
|
|
end;
|
|
|
|
with AButton.StateClicked do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(92, 92, 92);
|
|
Background.Gradient1.EndColor := RGBToColor(92, 92, 92);
|
|
Background.Gradient2.StartColor := RGBToColor(91, 91, 91);
|
|
Background.Gradient2.EndColor := RGBToColor(62, 62, 62);
|
|
Background.Gradient1EndPercent := 55;
|
|
Border.Color := RGBToColor(24, 24, 24);
|
|
end;
|
|
end;
|
|
|
|
procedure BCButtonMacOSXLion(AButton: TBCButtonFocus);
|
|
begin
|
|
AButton.Rounding.RoundX := 3;
|
|
AButton.Rounding.RoundY := 3;
|
|
AButton.RoundingDropDown.Assign(AButton.Rounding);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1EndPercent := 50;
|
|
Background.Gradient2.Point1XPercent := 0;
|
|
Background.Gradient2.Point1YPercent := 0;
|
|
Background.Gradient2.Point2YPercent := 100;
|
|
Background.Gradient2.GradientType := gtLinear;
|
|
Border.Color := RGBToColor(154, 154, 154);
|
|
Border.LightWidth := 1;
|
|
Border.LightOpacity := 175;
|
|
Border.Style := bboSolid;
|
|
FontEx.Color := clBlack;
|
|
FontEx.Shadow := False;
|
|
FontEx.Style := [];
|
|
end;
|
|
|
|
AButton.StateHover.Assign(AButton.StateNormal);
|
|
AButton.StateClicked.Assign(AButton.StateNormal);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(255, 255, 255);
|
|
Background.Gradient1.EndColor := RGBToColor(243, 243, 243);
|
|
Background.Gradient2.StartColor := RGBToColor(236, 236, 236);
|
|
Background.Gradient2.EndColor := RGBToColor(235, 235, 235);
|
|
end;
|
|
|
|
with AButton.StateHover do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(204, 229, 252);
|
|
Background.Gradient1.EndColor := RGBToColor(161, 209, 249);
|
|
Background.Gradient2.StartColor := RGBToColor(143, 202, 251);
|
|
Background.Gradient2.EndColor := RGBToColor(207, 245, 253);
|
|
Border.Color := RGBToColor(86, 87, 143);
|
|
end;
|
|
|
|
with AButton.StateClicked do
|
|
begin
|
|
Background.Gradient1.StartColor := RGBToColor(144, 195, 241);
|
|
Background.Gradient1.EndColor := RGBToColor(113, 180, 239);
|
|
Background.Gradient2.StartColor := RGBToColor(97, 173, 240);
|
|
Background.Gradient2.EndColor := RGBToColor(147, 206, 241);
|
|
Background.Gradient1EndPercent := 55;
|
|
Border.Color := RGBToColor(86, 87, 143);
|
|
Border.LightWidth := 0;
|
|
end;
|
|
end;
|
|
|
|
procedure BCButtonWindows8(AButton: TBCButtonFocus; cl1, cl2: TColor;
|
|
rounding: integer = 1);
|
|
begin
|
|
AButton.Rounding.RoundX := rounding;
|
|
AButton.Rounding.RoundY := rounding;
|
|
AButton.RoundingDropDown.Assign(AButton.Rounding);
|
|
|
|
with AButton.StateNormal do
|
|
begin
|
|
Background.Style := bbsColor;
|
|
Background.Color := cl1;
|
|
Border.Style := bboSolid;
|
|
Border.Width := 1;
|
|
Border.Color := cl1;
|
|
Border.LightWidth := 0;
|
|
Border.LightOpacity := 255;
|
|
Border.Style := bboSolid;
|
|
FontEx.Color := GetContrastColor(cl1);
|
|
FontEx.Shadow := False;
|
|
FontEx.Style := [];
|
|
end;
|
|
|
|
AButton.StateHover.Assign(AButton.StateNormal);
|
|
AButton.StateClicked.Assign(AButton.StateNormal);
|
|
|
|
with AButton.StateHover do
|
|
begin
|
|
Background.Color := cl2;
|
|
Border.Color := cl2;
|
|
end;
|
|
|
|
with AButton.StateClicked do
|
|
begin
|
|
Background.Color := cl2;
|
|
Border.Color := cl2;
|
|
end;
|
|
end;
|
|
|
|
procedure DrawFlashPlayerBody(ABitmap: TBGRABitmap);
|
|
begin
|
|
with ABitmap do
|
|
begin
|
|
GradientFill(0, 0, Width, Height, BGRA(203, 19, 23, 255), BGRA(110, 3, 20, 255),
|
|
gtLinear, PointF(0, 0), PointF(0, Height), dmSet);
|
|
Rectangle(0, 0, Width, Height + 1, BGRA(0, 0, 0, 215), dmDrawWithTransparency);
|
|
end;
|
|
end;
|
|
|
|
procedure DrawFlashPlayerButtonPanel(ABitmap: TBGRABitmap);
|
|
begin
|
|
with ABitmap do
|
|
begin
|
|
DrawHorizLine(0, 0, Width, BGRA(30, 30, 30, 255));
|
|
DrawHorizLine(0, Height - 1, Width, BGRA(62, 62, 62, 255));
|
|
Rectangle(0, 1, Width, Height - 1, BGRA(91, 91, 91, 255),
|
|
BGRA(76, 76, 76, 255), dmSet);
|
|
end;
|
|
end;
|
|
|
|
procedure DrawWindows7ToolBar(ABitmap: TBGRABitmap; ADir: TAlign;
|
|
Smooth: boolean = False);
|
|
var
|
|
tempBmp: TBGRABitmap;
|
|
begin
|
|
if Smooth then
|
|
tempBmp := DoubleGradientAlphaFill(Rect(0, 0, ABitmap.Width, ABitmap.Height),
|
|
BGRA(245, 249, 255, 255), BGRA(222, 232, 245, 255), BGRA(220, 230, 245, 255),
|
|
BGRA(222, 230, 245, 255), gdVertical, gdVertical, gdVertical, 0.50)
|
|
else
|
|
tempBmp := DoubleGradientAlphaFill(Rect(0, 0, ABitmap.Width, ABitmap.Height),
|
|
BGRA(245, 250, 255, 255), BGRA(230, 240, 250, 255), BGRA(220, 230, 244, 255),
|
|
BGRA(221, 233, 247, 255), gdVertical, gdVertical, gdVertical, 0.50);
|
|
|
|
ABitmap.BlendImage(0, 0, tempBmp, boLinearBlend);
|
|
tempBmp.Free;
|
|
|
|
case ADir of
|
|
alLeft: with ABitmap do
|
|
begin
|
|
if not Smooth then
|
|
Rectangle(0, 0, Width - 2, Height, BGRA(255, 255, 255, 100),
|
|
dmDrawWithTransparency);
|
|
SetVertLine(Width - 1, 0, Height - 1, BGRA(160, 175, 195, 255));
|
|
SetVertLine(Width - 2, 0, Height - 1, BGRA(205, 218, 234, 255));
|
|
end;
|
|
alTop: with ABitmap do
|
|
begin
|
|
if not Smooth then
|
|
Rectangle(0, 0, Width, Height - 2, BGRA(255, 255, 255, 100),
|
|
dmDrawWithTransparency);
|
|
SetHorizLine(0, Height - 1, Width - 1, BGRA(160, 175, 195, 255));
|
|
SetHorizLine(0, Height - 2, Width - 1, BGRA(205, 218, 234, 255));
|
|
end;
|
|
alRight: with ABitmap do
|
|
begin
|
|
if not Smooth then
|
|
Rectangle(2, 0, Width, Height, BGRA(255, 255, 255, 100),
|
|
dmDrawWithTransparency);
|
|
SetVertLine(0, 0, Height, BGRA(160, 175, 195, 255));
|
|
SetVertLine(1, 0, Height, BGRA(205, 218, 234, 255));
|
|
end;
|
|
alBottom: with ABitmap do
|
|
begin
|
|
if not Smooth then
|
|
Rectangle(0, 2, Width, Height, BGRA(255, 255, 255, 100),
|
|
dmDrawWithTransparency);
|
|
SetHorizLine(0, 0, Width - 1, BGRA(160, 175, 195, 255));
|
|
SetHorizLine(0, 1, Width - 1, BGRA(205, 218, 234, 255));
|
|
end;
|
|
alClient, alCustom, alNone: with ABitmap do
|
|
begin
|
|
if not Smooth then
|
|
Rectangle(0, 0, Width, Height, BGRA(255, 255, 255, 100),
|
|
dmDrawWithTransparency);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function StrToTBCSampleDrawing(const s: ansistring): TBCSampleDrawing;
|
|
var
|
|
ss: TBCSampleDrawing;
|
|
ls: ansistring;
|
|
begin
|
|
Result := sdDefault;
|
|
ls := {$IFDEF FPC}UTF8LowerCase{$ELSE}LowerCase{$ENDIF}(s);
|
|
for ss := low(TBCSampleDrawing) to high(TBCSampleDrawing) do
|
|
if ls = {$IFDEF FPC}UTF8LowerCase{$ELSE}LowerCase{$ENDIF}(BCSampleDrawingStr[ss]) then
|
|
begin
|
|
Result := ss;
|
|
break;
|
|
end;
|
|
end;
|
|
|
|
procedure BCSampleDrawingStrList(s: TStrings);
|
|
var
|
|
ss: TBCSampleDrawing;
|
|
begin
|
|
for ss := low(TBCSampleDrawing) to high(TBCSampleDrawing) do
|
|
s.Add(BCSampleDrawingStr[ss]);
|
|
end;
|
|
|
|
procedure DrawSample(ABitmap: TBGRABitmap; Element: TBCSampleDrawing;
|
|
Align: TAlign = alNone);
|
|
begin
|
|
case Element of
|
|
sdFlashPlayerBody: DrawFlashPlayerBody(ABitmap);
|
|
sdFlashPlayerButtonPanel: DrawFlashPlayerButtonPanel(ABitmap);
|
|
sdWindows7Toolbar: DrawWindows7ToolBar(ABitmap, Align);
|
|
sdiOSBar: DrawiOSBar(ABitmap);
|
|
sdiOSToolBar: DrawiOSToolBar(ABitmap, False);
|
|
sdiOSBackground: DrawiOSBackground(ABitmap);
|
|
sdWindows8_1: DrawWindows8Background(ABitmap, clScheme1_Background,
|
|
clScheme1_Selection);
|
|
sdWindows8_2: DrawWindows8Background(ABitmap, clScheme2_Background,
|
|
clScheme2_Selection);
|
|
sdWindows8_3: DrawWindows8Background(ABitmap, clScheme3_Background,
|
|
clScheme3_Selection);
|
|
sdWindows8_4: DrawWindows8Background(ABitmap, clScheme4_Background,
|
|
clScheme4_Selection);
|
|
sdWindows8_5: DrawWindows8Background(ABitmap, clScheme5_Background,
|
|
clScheme5_Selection);
|
|
sdWindows8_6: DrawWindows8Background(ABitmap, clScheme6_Background,
|
|
clScheme6_Selection);
|
|
sdWindows8_7: DrawWindows8Background(ABitmap, clScheme7_Background,
|
|
clScheme7_Selection);
|
|
sdWindows8_8: DrawWindows8Background(ABitmap, clScheme8_Background,
|
|
clScheme8_Selection);
|
|
sdWindows8_9: DrawWindows8Background(ABitmap, clScheme9_Background,
|
|
clScheme9_Selection);
|
|
sdWindows8_10: DrawWindows8Background(ABitmap, clScheme10_Background,
|
|
clScheme10_Selection);
|
|
sdWindows8_11: DrawWindows8Background(ABitmap, clScheme11_Background,
|
|
clScheme11_Selection);
|
|
sdWindows8_12: DrawWindows8Background(ABitmap, clScheme12_Background,
|
|
clScheme12_Selection);
|
|
sdWindows8_13: DrawWindows8Background(ABitmap, clScheme13_Background,
|
|
clScheme13_Selection);
|
|
sdWindows8_14: DrawWindows8Background(ABitmap, clScheme14_Background,
|
|
clScheme14_Selection);
|
|
sdWindows8_15: DrawWindows8Background(ABitmap, clScheme15_Background,
|
|
clScheme15_Selection);
|
|
sdWindows8_16: DrawWindows8Background(ABitmap, clScheme16_Background,
|
|
clScheme16_Selection);
|
|
sdWindows8_17: DrawWindows8Background(ABitmap, clScheme17_Background,
|
|
clScheme17_Selection);
|
|
sdWindows8_18: DrawWindows8Background(ABitmap, clScheme18_Background,
|
|
clScheme18_Selection);
|
|
sdWindows8_19: DrawWindows8Background(ABitmap, clScheme19_Background,
|
|
clScheme19_Selection);
|
|
sdWindows8_20: DrawWindows8Background(ABitmap, clScheme20_Background,
|
|
clScheme20_Selection);
|
|
sdWindows8_21: DrawWindows8Background(ABitmap, clScheme21_Background,
|
|
clScheme21_Selection);
|
|
sdWindows8_22: DrawWindows8Background(ABitmap, clScheme22_Background,
|
|
clScheme22_Selection);
|
|
sdWindows8_23: DrawWindows8Background(ABitmap, clScheme23_Background,
|
|
clScheme23_Selection);
|
|
sdWindows8_24: DrawWindows8Background(ABitmap, clScheme24_Background,
|
|
clScheme24_Selection);
|
|
sdWindows8_25: DrawWindows8Background(ABitmap, clScheme25_Background,
|
|
clScheme25_Selection);
|
|
end;
|
|
end;
|
|
|
|
function DrawSample(AWidth, AHeight: integer; Element: TBCSampleDrawing;
|
|
Align: TAlign = alNone): TBGRABitmap;
|
|
var
|
|
ABitmap: TBGRABitmap;
|
|
begin
|
|
ABitmap := TBGRABitmap.Create(AWidth, AHeight);
|
|
DrawSample(ABitmap, Element, Align);
|
|
Result := ABitmap;
|
|
end;
|
|
|
|
procedure DrawiOSBar(ABitmap: TBGRABitmap);
|
|
begin
|
|
ABitmap.GradientFill(0, 0, ABitmap.Width, ABitmap.Height - 4,
|
|
BGRA(238, 245, 248, 255), BGRA(196, 204, 208, 255), gtLinear,
|
|
PointF(0, 0), PointF(0, ABitmap.Height - 4), dmSet);
|
|
with ABitmap do
|
|
begin
|
|
// Bottom Bevel
|
|
SetHorizLine(0, Height - 4, Width - 1, BGRA(190, 198, 202, 255));
|
|
SetHorizLine(0, Height - 3, Width - 1, BGRA(201, 209, 213, 255));
|
|
SetHorizLine(0, Height - 2, Width - 1, BGRA(134, 142, 147, 255));
|
|
SetHorizLine(0, Height - 1, Width - 1, BGRA(177, 180, 182, 255));
|
|
end;
|
|
end;
|
|
|
|
procedure DrawiOSToolBar(ABitmap: TBGRABitmap; Shadow: boolean = True);
|
|
begin
|
|
if Shadow then
|
|
begin
|
|
DoubleGradientAlphaFill(ABitmap, Rect(0, 3, ABitmap.Width, ABitmap.Height - 6),
|
|
BGRA(172, 185, 201), BGRA(134, 153, 178, 255),
|
|
BGRA(125, 147, 175, 255), BGRA(110, 132, 162, 255),
|
|
gdVertical, gdVertical, gdVertical, 0.5);
|
|
with ABitmap do
|
|
begin
|
|
// Top Bevel
|
|
SetHorizLine(0, 0, Width - 1, BGRA(201, 210, 221, 255));
|
|
SetHorizLine(0, 1, Width - 1, BGRA(173, 184, 200, 255));
|
|
SetHorizLine(0, 2, Width - 1, BGRA(179, 190, 205, 255));
|
|
// Bottom Bevel
|
|
SetHorizLine(0, Height - 6, Width - 1, BGRA(107, 129, 158, 255));
|
|
SetHorizLine(0, Height - 5, Width - 1, BGRA(116, 139, 170, 255));
|
|
SetHorizLine(0, Height - 4, Width - 1, BGRA(48, 54, 62, 255));
|
|
// Bottom Shadow
|
|
SetHorizLine(0, Height - 3, Width - 1, BGRA(0, 0, 0, 75));
|
|
SetHorizLine(0, Height - 2, Width - 1, BGRA(255, 255, 255, 50));
|
|
SetHorizLine(0, Height - 1, Width - 1, BGRA(0, 0, 0, 10));
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
DoubleGradientAlphaFill(ABitmap, Rect(0, 3, ABitmap.Width, ABitmap.Height - 3),
|
|
BGRA(172, 185, 201), BGRA(134, 153, 178, 255),
|
|
BGRA(125, 147, 175, 255), BGRA(110, 132, 162, 255),
|
|
gdVertical, gdVertical, gdVertical, 0.5);
|
|
with ABitmap do
|
|
begin
|
|
// Top Bevel
|
|
SetHorizLine(0, 0, Width - 1, BGRA(201, 210, 221, 255));
|
|
SetHorizLine(0, 1, Width - 1, BGRA(173, 184, 200, 255));
|
|
SetHorizLine(0, 2, Width - 1, BGRA(179, 190, 205, 255));
|
|
// Bottom Bevel
|
|
SetHorizLine(0, Height - 3, Width - 1, BGRA(107, 129, 158, 255));
|
|
SetHorizLine(0, Height - 2, Width - 1, BGRA(116, 139, 170, 255));
|
|
SetHorizLine(0, Height - 1, Width - 1, BGRA(48, 54, 62, 255));
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure DrawiOSBackground(ABitmap: TBGRABitmap);
|
|
var
|
|
temp: TBGRABitmap;
|
|
begin
|
|
temp := TBGRABitmap.Create(16, 1, BGRA(197, 204, 211));
|
|
with temp do
|
|
begin
|
|
SetPixel(7, 0, BGRA(203, 210, 217));
|
|
SetPixel(14, 0, BGRA(204, 211, 218));
|
|
BGRAReplace(temp, temp.FilterBlurRadial(1, rbFast));
|
|
BGRAReplace(temp, temp.FilterSharpen);
|
|
end;
|
|
ABitmap.Fill(temp);
|
|
temp.Free;
|
|
end;
|
|
|
|
procedure DrawWindows8Background(ABitmap: TBGRABitmap; cl1, cl2: TColor);
|
|
begin
|
|
ABitmap.Fill(cl2);
|
|
end;
|
|
|
|
end.
|