lasarus_compotents/bgracontrols/materialcolors.pas

206 lines
7.1 KiB
ObjectPascal

// SPDX-License-Identifier: LGPL-3.0-linking-exception
{
Material Design color pallete from
https://material.google.com/style/color.html#color-color-palette
}
{******************************* CONTRIBUTOR(S) ******************************
- Edivando S. Santos Brasil | mailedivando@gmail.com
(Compatibility with delphi VCL 11/2018)
***************************** END CONTRIBUTOR(S) *****************************}
unit MaterialColors;
{$I bgracontrols.inc}
{$IFDEF FPC}
{$MODESWITCH ADVANCEDRECORDS}
{$ENDIF}
interface
uses
Classes, SysUtils, BGRABitmap, BGRABitmapTypes, {$IFDEF FPC}FGL{$ELSE}Generics.Collections{$ENDIF};
type
{ TMaterialColors }
TMaterialColors = record
M50: TBGRAPixel;
M100: TBGRAPixel;
M200: TBGRAPixel;
M300: TBGRAPixel;
M400: TBGRAPixel;
M500: TBGRAPixel;
M600: TBGRAPixel;
M700: TBGRAPixel;
M800: TBGRAPixel;
M900: TBGRAPixel;
A100: TBGRAPixel;
A200: TBGRAPixel;
A400: TBGRAPixel;
A700: TBGRAPixel;
procedure Create(aM50, aM100, aM200, aM300, aM400, aM500, aM600,
aM700, aM800, aM900, aA100, aA200, aA400, aA700: string);
end;
{$IFDEF FPC}
TMaterialColorsList = TFPGMap<string, TMaterialColors>;
{$ELSE}
TMaterialColorsList = TDictionary<string, TMaterialColors>;
{$ENDIF}
procedure MaterialColorsListStr(AList: TStrings);
var
MaterialBlack: TBGRAPixel;
MaterialWhite: TBGRAPixel;
MaterialRed, MaterialPink, MaterialPurple, MaterialDeepPurple,
MaterialIndigo, MaterialBlue, MaterialLightBlue, MaterialCyan,
MaterialTeal, MaterialGreen, MaterialLightGreen, MaterialLime,
MaterialYellow, MaterialAmber, MaterialOrange, MaterialDeepOrange,
MaterialBrown, MaterialGrey, MaterialBlueGrey: TMaterialColors;
MaterialColorsList: TMaterialColorsList;
implementation
procedure MaterialColorsListStr(AList: TStrings);
begin
with AList do
begin
Add('Red');
Add('Pink');
Add('Purple');
Add('Deep Purple');
Add('Indigo');
Add('Blue');
Add('Light Blue');
Add('Cyan');
Add('Teal');
Add('Green');
Add('Light Green');
Add('Lime');
Add('Yellow');
Add('Amber');
Add('Orange');
Add('Deep Orange');
Add('Brown');
Add('Grey');
Add('Blue Grey');
end;
end;
{ TMaterialColors }
procedure TMaterialColors.Create(aM50, aM100, aM200, aM300, aM400,
aM500, aM600, aM700, aM800, aM900, aA100, aA200, aA400, aA700: string);
begin
self.M50 := StrToBGRA(aM50);
self.M100 := StrToBGRA(aM100);
self.M200 := StrToBGRA(aM200);
self.M300 := StrToBGRA(aM300);
self.M400 := StrToBGRA(aM400);
self.M500 := StrToBGRA(aM500);
self.M600 := StrToBGRA(aM600);
self.M700 := StrToBGRA(aM700);
self.M800 := StrToBGRA(aM800);
self.M900 := StrToBGRA(aM900);
self.A100 := StrToBGRA(aA100);
self.A200 := StrToBGRA(aA200);
self.A400 := StrToBGRA(aA400);
self.A700 := StrToBGRA(aA700);
end;
initialization
MaterialBlack := BGRABlack;
MaterialWhite := BGRAWhite;
MaterialRed.Create('#FFEBEE', '#FFCDD2', '#EF9A9A', '#E57373', '#EF5350',
'#F44336', '#E53935', '#D32F2F', '#C62828', '#B71C1C', '#FF8A80',
'#FF5252', '#FF1744', '#D50000');
MaterialPink.Create('#FCE4EC', '#F8BBD0', '#F48FB1', '#F06292',
'#EC407A', '#E91E63', '#D81B60', '#C2185B', '#AD1457', '#880E4F',
'#FF80AB', '#FF4081', '#F50057', '#C51162');
MaterialPurple.Create('#F3E5F5', '#E1BEE7', '#CE93D8', '#BA68C8', '#AB47BC',
'#9C27B0', '#8E24AA', '#7B1FA2', '#6A1B9A', '#4A148C',
'#EA80FC', '#E040FB', '#D500F9', '#AA00FF');
MaterialDeepPurple.Create('#EDE7F6', '#D1C4E9', '#B39DDB', '#9575CD', '#7E57C2',
'#673AB7', '#5E35B1', '#512DA8', '#4527A0',
'#311B92', '#B388FF', '#7C4DFF', '#651FFF', '#6200EA');
MaterialIndigo.Create('#E8EAF6', '#C5CAE9', '#9FA8DA', '#7986CB', '#5C6BC0',
'#3F51B5', '#3949AB', '#303F9F', '#283593', '#1A237E',
'#8C9EFF', '#536DFE', '#3D5AFE', '#304FFE');
MaterialBlue.Create('#E3F2FD', '#BBDEFB', '#90CAF9', '#64B5F6', '#42A5F5',
'#2196F3', '#1E88E5', '#1976D2', '#1565C0', '#0D47A1',
'#82B1FF', '#448AFF', '#2979FF', '#2962FF');
MaterialLightBlue.Create('#E1F5FE', '#B3E5FC', '#81D4FA', '#4FC3F7', '#29B6F6',
'#03A9F4', '#039BE5', '#0288D1', '#0277BD', '#01579B',
'#80D8FF', '#40C4FF', '#00B0FF', '#0091EA');
MaterialCyan.Create('#E0F7FA', '#B2EBF2', '#80DEEA', '#4DD0E1', '#26C6DA',
'#00BCD4', '#00ACC1', '#0097A7', '#00838F', '#006064',
'#84FFFF', '#18FFFF', '#00E5FF', '#00B8D4');
MaterialTeal.Create('#E0F2F1', '#B2DFDB', '#80CBC4', '#4DB6AC', '#26A69A',
'#009688', '#00897B', '#00796B', '#00695C', '#004D40',
'#A7FFEB', '#64FFDA', '#1DE9B6', '#00BFA5');
MaterialGreen.Create('#E8F5E9', '#C8E6C9', '#A5D6A7', '#81C784', '#66BB6A',
'#4CAF50', '#43A047', '#388E3C', '#2E7D32', '#1B5E20',
'#B9F6CA', '#69F0AE', '#00E676', '#00C853');
MaterialLightGreen.Create('#F1F8E9', '#DCEDC8', '#C5E1A5', '#AED581', '#9CCC65',
'#8BC34A', '#7CB342', '#689F38', '#558B2F', '#33691E',
'#CCFF90', '#B2FF59', '#76FF03', '#64DD17');
MaterialLime.Create('#F9FBE7', '#F0F4C3', '#E6EE9C', '#DCE775', '#D4E157',
'#CDDC39', '#C0CA33', '#AFB42B', '#9E9D24', '#827717',
'#F4FF81', '#EEFF41', '#C6FF00', '#AEEA00');
MaterialYellow.Create('#FFFDE7', '#FFF9C4', '#FFF59D', '#FFF176', '#FFEE58',
'#FFEB3B', '#FDD835', '#FBC02D', '#F9A825', '#F57F17',
'#FFFF8D', '#FFFF00', '#FFEA00', '#FFD600');
MaterialAmber.Create('#FFF8E1', '#FFECB3', '#FFE082', '#FFD54F', '#FFCA28',
'#FFC107', '#FFB300', '#FFA000', '#FF8F00', '#FF6F00',
'#FFE57F', '#FFD740', '#FFC400', '#FFAB00');
MaterialOrange.Create('#FFF3E0', '#FFE0B2', '#FFCC80', '#FFB74D', '#FFA726',
'#FF9800', '#FB8C00', '#F57C00', '#EF6C00', '#E65100',
'#FFD180', '#FFAB40', '#FF9100', '#FF6D00');
MaterialDeepOrange.Create('#FBE9E7', '#FFCCBC', '#FFAB91', '#FF8A65', '#FF7043',
'#FF5722', '#F4511E', '#E64A19', '#D84315', '#BF360C',
'#FF9E80', '#FF6E40', '#FF3D00', '#DD2C00');
MaterialBrown.Create('#EFEBE9', '#D7CCC8', '#BCAAA4', '#A1887F', '#8D6E63',
'#795548', '#6D4C41', '#5D4037', '#4E342E', '#3E2723',
'', '', '', '');
MaterialGrey.Create('#FAFAFA', '#F5F5F5', '#EEEEEE', '#E0E0E0', '#BDBDBD',
'#9E9E9E', '#757575', '#616161', '#424242', '#212121',
'', '', '', '');
MaterialBlueGrey.Create('#ECEFF1', '#CFD8DC', '#B0BEC5', '#90A4AE', '#78909C',
'#607D8B', '#546E7A', '#455A64', '#37474F', '#263238',
'', '', '', '');
MaterialColorsList := TMaterialColorsList.Create;
with MaterialColorsList do
begin
Add('Red', MaterialRed);
Add('Pink', MaterialPink);
Add('Purple', MaterialPurple);
Add('Deep Purple', MaterialDeepPurple);
Add('Indigo', MaterialIndigo);
Add('Blue', MaterialBlue);
Add('Light Blue', MaterialLightBlue);
Add('Cyan', MaterialCyan);
Add('Teal', MaterialTeal);
Add('Green', MaterialGreen);
Add('Light Green', MaterialLightGreen);
Add('Lime', MaterialLime);
Add('Yellow', MaterialYellow);
Add('Amber', MaterialAmber);
Add('Orange', MaterialOrange);
Add('Deep Orange', MaterialDeepOrange);
Add('Brown', MaterialBrown);
Add('Grey', MaterialGrey);
Add('Blue Grey', MaterialBlueGrey);
end;
finalization
MaterialColorsList.Free;
end.