瀏覽代碼

Updated bcsamples.pas, added unit bcbrightandcontrast.pas

lainz 9 年之前
父節點
當前提交
5d040ef258

+ 1 - 1
test/test_bccontrols/test_bcbutton_functions/ubrightandcontrast.pas → bcbrightandcontrast.pas

@@ -1,4 +1,4 @@
-unit ubrightandcontrast;
+unit BCBrightAndContrast;
 
 { Unit contributed by esvignolo }
 

+ 76 - 6
bcsamples.pas

@@ -8,7 +8,8 @@ uses
   Classes, Controls, Graphics,
   StdCtrls, LCLProc, LCLType, LazUTF8,
   BCButton, BCButtonFocus, BCTypes,
-  BGRABitmap, BGRABitmapTypes, BGRAGradients;
+  BGRABitmap, BGRABitmapTypes, BGRAGradients, MaterialColors,
+  BCBrightAndContrast;
 
 const
   {Accent Colors}
@@ -86,7 +87,11 @@ type
     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);
+    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,
@@ -108,7 +113,12 @@ const
     , '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');
+    , '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',
@@ -148,6 +158,7 @@ procedure BCButtonOffice2010(AButton: TBCButton);
 procedure BCButtonFlashPlayer(AButton: TBCButton);
 procedure BCButtonMacOSXLion(AButton: TBCButton);
 procedure BCButtonWindows8(AButton: TBCButton; cl1, cl2: TColor);
+procedure BCButtonWindows8(AButton: TBCButton; cl1, cl2: TBGRAPixel);
 
 procedure BCButtonWindows7(AButton: TBCButtonFocus);
 procedure BCButtonWindows7ToolBar(AButton: TBCButtonFocus);
@@ -155,6 +166,7 @@ procedure BCButtonOffice2010(AButton: TBCButtonFocus);
 procedure BCButtonFlashPlayer(AButton: TBCButtonFocus);
 procedure BCButtonMacOSXLion(AButton: TBCButtonFocus);
 procedure BCButtonWindows8(AButton: TBCButtonFocus; cl1, cl2: TColor);
+procedure BCButtonWindows8(AButton: TBCButtonFocus; cl1, cl2: TBGRAPixel);
 
 { Drawings }
 procedure DrawFlashPlayerBody(ABitmap: TBGRABitmap);
@@ -279,6 +291,30 @@ begin
     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);
+    ssMaterialPink: BCButtonWindows8(temp, MaterialPink.M500, MaterialPink.M300);
+    ssMaterialPurple: BCButtonWindows8(temp, MaterialPurple.M500, MaterialPurple.M300);
+    ssMaterialDeepPurple: BCButtonWindows8(temp, MaterialDeepPurple.M500,
+        MaterialDeepPurple.M300);
+    ssMaterialIndigo: BCButtonWindows8(temp, MaterialIndigo.M500, MaterialIndigo.M300);
+    ssMaterialBlue: BCButtonWindows8(temp, MaterialBlue.M500, MaterialBlue.M300);
+    ssMaterialLightBlue: BCButtonWindows8(temp, MaterialLightBlue.M500,
+        MaterialLightBlue.M300);
+    ssMaterialCyan: BCButtonWindows8(temp, MaterialCyan.M500, MaterialCyan.M300);
+    ssMaterialTeal: BCButtonWindows8(temp, MaterialTeal.M500, MaterialTeal.M300);
+    ssMaterialGreen: BCButtonWindows8(temp, MaterialGreen.M500, MaterialGreen.M300);
+    ssMaterialLightGreen: BCButtonWindows8(temp, MaterialLightGreen.M500,
+        MaterialLightGreen.M300);
+    ssMaterialLime: BCButtonWindows8(temp, MaterialLime.M500, MaterialLime.M300);
+    ssMaterialYellow: BCButtonWindows8(temp, MaterialYellow.M500, MaterialYellow.M300);
+    ssMaterialAmber: BCButtonWindows8(temp, MaterialAmber.M500, MaterialAmber.M300);
+    ssMaterialOrange: BCButtonWindows8(temp, MaterialOrange.M500, MaterialOrange.M300);
+    ssMaterialDeepOrange: BCButtonWindows8(temp, MaterialDeepOrange.M500,
+        MaterialDeepOrange.M300);
+    ssMaterialBrown: BCButtonWindows8(temp, MaterialBrown.M500, MaterialBrown.M300);
+    ssMaterialGrey: BCButtonWindows8(temp, MaterialGrey.M500, MaterialGrey.M300);
+    ssMaterialBlueGrey: BCButtonWindows8(temp, MaterialBlueGrey.M500,
+        MaterialBlueGrey.M300);
   end;
   StyleButtons(AControl, temp);
   temp.Free;
@@ -320,6 +356,30 @@ begin
     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);
+    ssMaterialPink: BCButtonWindows8(temp, MaterialPink.M500, MaterialPink.M300);
+    ssMaterialPurple: BCButtonWindows8(temp, MaterialPurple.M500, MaterialPurple.M300);
+    ssMaterialDeepPurple: BCButtonWindows8(temp, MaterialDeepPurple.M500,
+        MaterialDeepPurple.M300);
+    ssMaterialIndigo: BCButtonWindows8(temp, MaterialIndigo.M500, MaterialIndigo.M300);
+    ssMaterialBlue: BCButtonWindows8(temp, MaterialBlue.M500, MaterialBlue.M300);
+    ssMaterialLightBlue: BCButtonWindows8(temp, MaterialLightBlue.M500,
+        MaterialLightBlue.M300);
+    ssMaterialCyan: BCButtonWindows8(temp, MaterialCyan.M500, MaterialCyan.M300);
+    ssMaterialTeal: BCButtonWindows8(temp, MaterialTeal.M500, MaterialTeal.M300);
+    ssMaterialGreen: BCButtonWindows8(temp, MaterialGreen.M500, MaterialGreen.M300);
+    ssMaterialLightGreen: BCButtonWindows8(temp, MaterialLightGreen.M500,
+        MaterialLightGreen.M300);
+    ssMaterialLime: BCButtonWindows8(temp, MaterialLime.M500, MaterialLime.M300);
+    ssMaterialYellow: BCButtonWindows8(temp, MaterialYellow.M500, MaterialYellow.M300);
+    ssMaterialAmber: BCButtonWindows8(temp, MaterialAmber.M500, MaterialAmber.M300);
+    ssMaterialOrange: BCButtonWindows8(temp, MaterialOrange.M500, MaterialOrange.M300);
+    ssMaterialDeepOrange: BCButtonWindows8(temp, MaterialDeepOrange.M500,
+        MaterialDeepOrange.M300);
+    ssMaterialBrown: BCButtonWindows8(temp, MaterialBrown.M500, MaterialBrown.M300);
+    ssMaterialGrey: BCButtonWindows8(temp, MaterialGrey.M500, MaterialGrey.M300);
+    ssMaterialBlueGrey: BCButtonWindows8(temp, MaterialBlueGrey.M500,
+        MaterialBlueGrey.M300);
   end;
   StyleButtons(AControl, temp);
   temp.Free;
@@ -639,7 +699,7 @@ begin
     Border.LightWidth := 0;
     Border.LightOpacity := 255;
     Border.Style := bboSolid;
-    FontEx.Color := clWhite;
+    FontEx.Color := GetContrastColor(cl1);
     FontEx.Shadow := False;
     FontEx.Style := [];
   end;
@@ -660,9 +720,14 @@ begin
   end;
 end;
 
+procedure BCButtonWindows8(AButton: TBCButton; cl1, cl2: TBGRAPixel);
+begin
+  BCButtonWindows8(AButton, BGRAToColor(cl1), BGRAToColor(cl2));
+end;
+
 procedure BCButtonWindows7(AButton: TBCButtonFocus);
 begin
-    AButton.Rounding.RoundX := 3;
+  AButton.Rounding.RoundX := 3;
   AButton.Rounding.RoundY := 3;
   AButton.RoundingDropDown.Assign(AButton.Rounding);
 
@@ -943,7 +1008,7 @@ begin
     Border.LightWidth := 0;
     Border.LightOpacity := 255;
     Border.Style := bboSolid;
-    FontEx.Color := clWhite;
+    FontEx.Color := GetContrastColor(cl1);
     FontEx.Shadow := False;
     FontEx.Style := [];
   end;
@@ -964,6 +1029,11 @@ begin
   end;
 end;
 
+procedure BCButtonWindows8(AButton: TBCButtonFocus; cl1, cl2: TBGRAPixel);
+begin
+  BCButtonWindows8(AButton, BGRAToColor(cl1), BGRAToColor(cl2));
+end;
+
 procedure DrawFlashPlayerBody(ABitmap: TBGRABitmap);
 begin
   with ABitmap do

+ 5 - 1
bgracontrols.lpk

@@ -23,7 +23,7 @@
       </Linking>
     </CompilerOptions>
     <Version Major="4" Minor="3"/>
-    <Files Count="41">
+    <Files Count="42">
       <Item1>
         <Filename Value="bcbasectrls.pas"/>
         <UnitName Value="BCBaseCtrls"/>
@@ -216,6 +216,10 @@
         <Filename Value="materialcolors.pas"/>
         <UnitName Value="materialcolors"/>
       </Item41>
+      <Item42>
+        <Filename Value="bcbrightandcontrast.pas"/>
+        <UnitName Value="ubrightandcontrast"/>
+      </Item42>
     </Files>
     <RequiredPkgs Count="2">
       <Item1>

+ 2 - 1
bgracontrols.pas

@@ -16,7 +16,8 @@ uses
   BGRAImageManipulation, BGRAKnob, BGRAResizeSpeedButton, BGRAScript, 
   BGRAShape, BGRASpeedButton, BGRASpriteAnimation, BGRAVirtualScreen, 
   DTAnalogClock, DTAnalogCommon, DTAnalogGauge, dtthemedclock, dtthemedgauge, 
-  MouseAndKeyInput, BCKeyboard, MaterialColors, LazarusPackageIntf;
+  MouseAndKeyInput, BCKeyboard, MaterialColors, bcbrightandcontrast, 
+  LazarusPackageIntf;
 
 implementation
 

+ 0 - 1
test/test_bccontrols/test_bcbutton_functions/test.lpi

@@ -12,7 +12,6 @@
       <XPManifest>
         <DpiAware Value="True"/>
       </XPManifest>
-      <Icon Value="0"/>
     </General>
     <BuildModes Count="1">
       <Item1 Name="Default" Default="True"/>

+ 1 - 1
test/test_bccontrols/test_bcbutton_functions/umain.pas

@@ -26,7 +26,7 @@ var
 
 implementation
 uses
-  ubrightandcontrast;
+  bcbrightandcontrast;
 
 {$R *.lfm}
 

+ 2 - 33
test/test_materialcolors/umain.pas

@@ -6,7 +6,8 @@ interface
 
 uses
   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
-  MaterialColors, BCMaterialDesignButton, BGRABitmap, BGRABitmapTypes;
+  MaterialColors, BCMaterialDesignButton, BGRABitmap, BGRABitmapTypes,
+  BCBrightAndContrast;
 
 type
 
@@ -19,7 +20,6 @@ type
     procedure FormCreate(Sender: TObject);
   private
     procedure UpdateButton();
-    function GetContrastColor(ABGColor: TColor): TColor;
   public
 
   end;
@@ -59,37 +59,6 @@ begin
   end;
 end;
 
-function TForm1.GetContrastColor(ABGColor: TColor): TColor;
-var
-  ADouble: double;
-  R, G, B: byte;
-begin
-  if ABGColor <= 0 then
-  begin
-    Result := clWhite;
-    Exit; // *** EXIT RIGHT HERE ***
-  end;
-
-  if ABGColor = clWhite then
-  begin
-    Result := clBlack;
-    Exit; // *** EXIT RIGHT HERE ***
-  end;
-
-  // Get RGB from Color
-  R := Red(ABGColor);
-  G := Green(ABGColor);
-  B := Blue(ABGColor);
-
-  // Counting the perceptive luminance - human eye favors green color...
-  ADouble := 1 - (0.299 * R + 0.587 * G + 0.114 * B) / 255;
-
-  if (ADouble < 0.5) then
-    Result := clBlack  // bright colors - black font
-  else
-    Result := clWhite;  // dark colors - white font
-end;
-
 procedure TForm1.ComboBox1Change(Sender: TObject);
 begin
   UpdateButton();