// 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.