⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csscolors.pas

📁 delphi 中用于 css 样式表的解析的类
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -