📄 csscolors.pas
字号:
unit CSSColors;
// Version 1.0
//
// The contents of this file are subject to the Mozilla Public License
// Version 1.1 (the "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
//
// Software distributed under the License is distributed on an "AS IS" basis,
// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the
// specific language governing rights and limitations under the License.
//
// Site: http://www.mythcode.org
// Author: Dzianis Koshkin
// E-mail: k5@yandex.ru
//
// (C) 2005 MYTHcode.org
interface
uses
{$IFDEF MSWINDOWS}
Windows,
{$ENDIF}
Graphics, SysUtils, HSLColors, SubUtils;
type
TColorName = record
Name: string;
Value: TColor;
end;
TCSSColorType = (ctNotColor, ctKeyword, ctHexadecimal, ctDecimal, ctPercentage);
function CSSColor(S: string; DefaultColor: TColor = clBlack): TColor; overload;
function CSSColor(S: string; out ColorType: TCSSColorType; DefaultColor: TColor = clBlack; SysToRGB: boolean = false): TColor; overload;
function _RGB(Color: TColor): string; overload;
function _Hex(Color: TColor): string; overload;
function _Percent(Color: TColor): string; overload;
function _Keyword(Color: TColor; ColorType: TCSSColorType = ctHexadecimal): string; overload;
procedure UnSystem(var Color: TColor); overload;
const
KeywordColors: array[1..17] of TColorName = (
(Name: 'Aqua'; Value: clAqua ),
(Name: 'Black'; Value: clBlack ),
(Name: 'Blue'; Value: clBlue ),
(Name: 'Fuchsia'; Value: clFuchsia ),
(Name: 'Gray'; Value: clGray ),
(Name: 'Green'; Value: clGreen ),
(Name: 'Lime'; Value: clLime ),
(Name: 'Maroon'; Value: clMaroon ),
(Name: 'Navy'; Value: clNavy ),
(Name: 'Olive'; Value: clOlive ),
(Name: 'Orange'; Value: $00A5ff ),
(Name: 'Purple'; Value: clPurple ),
(Name: 'Red'; Value: clRed ),
(Name: 'Silver'; Value: clSilver ),
(Name: 'Teal'; Value: clTeal ),
(Name: 'White'; Value: clWhite ),
(Name: 'Yellow'; Value: clYellow )
);
SystemColors: array[1..28] of TColorName = (
(Name: 'ActiveBorder'; Value: clActiveBorder),
(Name: 'ActiveCaption'; Value: clActiveCaption),
(Name: 'AppWorkspace'; Value: clAppWorkspace),
(Name: 'Background'; Value: clBackground),
(Name: 'ButtonFace'; Value: clBtnFace),
(Name: 'ButtonHighlight'; Value: clBtnHighlight),
(Name: 'ButtonShadow'; Value: clBtnShadow),
(Name: 'ButtonText'; Value: clBtnText),
(Name: 'CaptionText'; Value: clCaptionText),
(Name: 'GrayText'; Value: clGrayText),
(Name: 'Highlight'; Value: clHighlight),
(Name: 'HighlightText'; Value: clHighlightText),
(Name: 'InactiveBorder'; Value: clInactiveBorder),
(Name: 'InactiveCaption'; Value: clInactiveCaption),
(Name: 'InactiveCaptionText';Value: clInactiveCaptionText),
(Name: 'InfoBackground'; Value: clInfoBk),
(Name: 'InfoText'; Value: clInfoText),
(Name: 'Menu'; Value: clMenu),
(Name: 'MenuText'; Value: clMenuText),
(Name: 'Scrollbar'; Value: clScrollbar),
(Name: 'ThreeDDarkShadow'; Value: cl3DDkShadow),
(Name: 'ThreeDFace'; Value: clBtnFace),
(Name: 'ThreeDHighlight'; Value: cl3DLight),
(Name: 'ThreeDLightShadow'; Value: clBtnShadow), //?
(Name: 'ThreeDShadow'; Value: clBtnShadow),
(Name: 'Window'; Value: clWindow),
(Name: 'WindowFrame'; Value: clWindowFrame),
(Name: 'WindowText'; Value: clWindowText)
);
VerbalColors: array[1..140] of TColorName = (
(Name: 'Alicemblue'; Value: $F0F8FF),
(Name: 'Antiquewhite'; Value: $FAEBD7),
(Name: 'Aqua'; Value: $00FFFF),
(Name: 'Aquamarine'; Value: $7FFFD4),
(Name: 'Azure'; Value: $F0FFFF),
(Name: 'Beige'; Value: $F5F5DC),
(Name: 'Bisque'; Value: $FFE4C4),
(Name: 'Black'; Value: $000000),
(Name: 'Blanchedalmond'; Value: $FFEBCD),
(Name: 'Blue'; Value: $0000FF),
(Name: 'Blueviolet'; Value: $8A2BE2),
(Name: 'Brown'; Value: $A52A2A),
(Name: 'Burlywood'; Value: $DEB887),
(Name: 'Cadetblue'; Value: $5F9EA0),
(Name: 'Chartreuse'; Value: $7FFF00),
(Name: 'Chocolate'; Value: $D2691E),
(Name: 'Coral'; Value: $FF7F50),
(Name: 'Cornflowerblue'; Value: $6495ED),
(Name: 'Cornsilk'; Value: $FFF8DC),
(Name: 'Crimson'; Value: $DC143C),
(Name: 'Cyan'; Value: $00FFFF),
(Name: 'Darkblue'; Value: $00008B),
(Name: 'Darkcyan'; Value: $008B8B),
(Name: 'Darkgoldenrod'; Value: $B8860B),
(Name: 'Darkgray'; Value: $A9A9A9),
(Name: 'Darkgreen'; Value: $006400),
(Name: 'Darkkhaki'; Value: $BDB76B),
(Name: 'Darkmagenta'; Value: $8B008b),
(Name: 'Darkolivegreen'; Value: $556B2F),
(Name: 'Darkorange'; Value: $FF8C00),
(Name: 'Darkochid'; Value: $9932CC),
(Name: 'Darkred'; Value: $8B0000),
(Name: 'Darksalmon'; Value: $E9967A),
(Name: 'Darkseagreen'; Value: $8FBC8F),
(Name: 'Darkslateblue'; Value: $483D8B),
(Name: 'Darkslategray'; Value: $2F4F4F),
(Name: 'Darkturquoise'; Value: $00CED1),
(Name: 'Darkviolet'; Value: $9400D3),
(Name: 'Deeppink'; Value: $FF1493),
(Name: 'Deepskyblue'; Value: $00BFFF),
(Name: 'Dimgray'; Value: $696969),
(Name: 'Dodgerblue'; Value: $1E90FF),
(Name: 'Firebrick'; Value: $B22222),
(Name: 'Floralwhite'; Value: $FFFAF0),
(Name: 'Forestgreen'; Value: $228B22),
(Name: 'Fushsia'; Value: $FF00FF),
(Name: 'Gainsboro'; Value: $DCDCDC),
(Name: 'Ghostwhite'; Value: $F8F8FF),
(Name: 'Gold'; Value: $FFD700),
(Name: 'Goldenrod'; Value: $DAA520),
(Name: 'Gray'; Value: $808080),
(Name: 'Green'; Value: $008000),
(Name: 'Greenyellow'; Value: $ADFF2F),
(Name: 'Honeydew'; Value: $F0FFF0),
(Name: 'Hotpink'; Value: $FF69B4),
(Name: 'Indiandred'; Value: $CD5C5C),
(Name: 'Indigo'; Value: $4B0082),
(Name: 'Ivory'; Value: $FFFFF0),
(Name: 'Khaki'; Value: $F0E68C),
(Name: 'Lavender'; Value: $E6E6FA),
(Name: 'Lavenderblush'; Value: $FFF0F5),
(Name: 'Lawngreen'; Value: $7CFC00),
(Name: 'Lemonchiffon'; Value: $FFFACD),
(Name: 'Ligtblue'; Value: $ADD8E6),
(Name: 'Lightcoral'; Value: $F08080),
(Name: 'Lightcyan'; Value: $E0FFFF),
(Name: 'Lightgoldenrodyellow'; Value: $FAFAD2),
(Name: 'Lightgreen'; Value: $90EE90),
(Name: 'Lightgrey'; Value: $D3D3D3),
(Name: 'Lightpink'; Value: $FFB6C1),
(Name: 'Lightsalmon'; Value: $FFA07A),
(Name: 'Lightseagreen'; Value: $20B2AA),
(Name: 'Lightscyblue'; Value: $87CEFA),
(Name: 'Lightslategray'; Value: $778899),
(Name: 'Lightsteelblue'; Value: $B0C4DE),
(Name: 'Lightyellow'; Value: $FFFFE0),
(Name: 'Lime'; Value: $00FF00),
(Name: 'Limegreen'; Value: $32CD32),
(Name: 'Linen'; Value: $FAF0E6),
(Name: 'Magenta'; Value: $FF00FF),
(Name: 'Maroon'; Value: $800000),
(Name: 'Mediumaquamarine'; Value: $66CDAA),
(Name: 'Mediumblue'; Value: $0000CD),
(Name: 'Mediumorchid'; Value: $BA55D3),
(Name: 'Mediumpurple'; Value: $9370DB),
(Name: 'Mediumseagreen'; Value: $3CB371),
(Name: 'Mediumslateblue'; Value: $7B68EE),
(Name: 'Mediumspringgreen'; Value: $00FA9A),
(Name: 'Mediumturquoise'; Value: $48D1CC),
(Name: 'Mediumvioletred'; Value: $C71585),
(Name: 'Midnightblue'; Value: $191970),
(Name: 'Mintcream'; Value: $F5FFFA),
(Name: 'Mistyrose'; Value: $FFE4E1),
(Name: 'Moccasin'; Value: $FFE4B5),
(Name: 'Navajowhite'; Value: $FFDEAD),
(Name: 'Navy'; Value: $000080),
(Name: 'Oldlace'; Value: $FDF5E6),
(Name: 'Olive'; Value: $808000),
(Name: 'Olivedrab'; Value: $6B8E23),
(Name: 'Orange'; Value: $FFA500),
(Name: 'Orengered'; Value: $FF4500),
(Name: 'Orchid'; Value: $DA70D6),
(Name: 'Palegoldenrod'; Value: $EEE8AA),
(Name: 'Palegreen'; Value: $98FB98),
(Name: 'Paleturquose'; Value: $AFEEEE),
(Name: 'Palevioletred'; Value: $DB7093),
(Name: 'Papayawhop'; Value: $FFEFD5),
(Name: 'Peachpuff'; Value: $FFDAB9),
(Name: 'Peru'; Value: $CD853F),
(Name: 'Pink'; Value: $FFC0CB),
(Name: 'Plum'; Value: $DDA0DD),
(Name: 'Powderblue'; Value: $B0E0E6),
(Name: 'Purple'; Value: $800080),
(Name: 'Red'; Value: $FF0000),
(Name: 'Rosybrown'; Value: $BC8F8F),
(Name: 'Royalblue'; Value: $4169E1),
(Name: 'Saddlebrown'; Value: $8B4513),
(Name: 'Salmon'; Value: $FA8072),
(Name: 'Sandybrown'; Value: $F4A460),
(Name: 'Seagreen'; Value: $2E8B57),
(Name: 'Seashell'; Value: $FFF5EE),
(Name: 'Sienna'; Value: $A0522D),
(Name: 'Silver'; Value: $C0C0C0),
(Name: 'Skyblue'; Value: $87CEEB),
(Name: 'Slateblue'; Value: $6A5ACD),
(Name: 'Slategray'; Value: $708080),
(Name: 'Snow'; Value: $FFFAFA),
(Name: 'Springgreen'; Value: $00FF7F),
(Name: 'Steelblue'; Value: $4682B4),
(Name: 'Tan'; Value: $D2B48C),
(Name: 'Teal'; Value: $008080),
(Name: 'Thistle'; Value: $D8BFD8),
(Name: 'Tomato'; Value: $FF6347),
(Name: 'Turquose'; Value: $40E0D0),
(Name: 'Violet'; Value: $EE82EE),
(Name: 'Wheat'; Value: $F5DEB3),
(Name: 'White'; Value: $FFFFFF),
(Name: 'Whitesmoke'; Value: $F5F5F5),
(Name: 'Yellow'; Value: $FFFF00),
(Name: 'Yellowgreen'; Value: $9ACD32)
);
implementation
uses Math;
const
Hex: array['0'..'f'] of Byte =(0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,
10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
10,11,12,13,14,15);
RGBChar: set of Char = ['0'..'9', ' ','.','%','-'];
CSS2NamedColors: array[1..46] of TColorName = (
(Name: 'ActiveBorder'; Value: clActiveBorder),
(Name: 'ActiveCaption'; Value: clActiveCaption),
(Name: 'AppWorkspace'; Value: clAppWorkspace),
(Name: 'aqua'; Value: clAqua ),
(Name: 'Background'; Value: clBackground),
(Name: 'black'; Value: clBlack ),
(Name: 'blue'; Value: clBlue ),
(Name: 'ButtonFace'; Value: clBtnFace),
(Name: 'ButtonHighlight'; Value: clBtnHighlight),
(Name: 'ButtonShadow'; Value: clBtnShadow),
(Name: 'ButtonText'; Value: clBtnText),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -