Browse Source

custom workspace color

Johann 6 years ago
parent
commit
bb2d43584b

+ 4 - 0
.gitignore

@@ -22,3 +22,7 @@ lazpaint/release/lazpaint
 lazpaint/test_embedded/backup/
 
 lazpaint/test_embedded/project1
+
+lazpaint/dialog/filter/backup/
+
+lazpaint/release/bin/lazpaint

+ 6 - 2
lazpaint/dialog/filter/uphongfilter.pas

@@ -51,6 +51,7 @@ type
     FInitializing: boolean;
     FCenter: TPointF;
     FHeightMap: TBGRABitmap;
+    FWorkspaceColor: TColor;
     function GetCurrentLightPos: TPointF;
     procedure PreviewNeeded;
     function ComputeFilteredLayer: TBGRABitmap;
@@ -72,6 +73,7 @@ begin
   result := false;
   FPhongFilter:= TFPhongFilter.create(nil);
   FPhongFilter.FilterConnector := AFilterConnector as TFilterConnector;
+  FPhongFilter.FWorkspaceColor:= FPhongFilter.FilterConnector.LazPaintInstance.Config.GetWorkspaceColor;
   try
     if FPhongFilter.FilterConnector.ActiveLayer <> nil then
       result:= (FPhongFilter.showModal = mrOk)
@@ -97,6 +99,7 @@ begin
   ScaleControl(Self,OriginalDPI);
   CheckOKCancelBtns(Button_OK,Button_Cancel);
   FCenter := PointF(0.5,0.5);
+  FWorkspaceColor:= clAppWorkspace;
 end;
 
 procedure TFPhongFilter.FormDestroy(Sender: TObject);
@@ -144,9 +147,10 @@ var x,y: integer;
 begin
   x := round((FCenter.X+0.5)*PaintBox1.Width/2);
   y := round((FCenter.Y+0.5)*PaintBox1.Height/2);
-  PaintBox1.Canvas.Brush.Style := bsClear;
+  PaintBox1.Canvas.Brush.Style := bsSolid;
+  PaintBox1.Canvas.Brush.Color := FWorkspaceColor;
   PaintBox1.Canvas.Pen.Style := psSolid;
-  PaintBox1.Canvas.Pen.Color := BGRAToColor(MergeBGRA(ColorToBGRA(ColorToRGB(clBlack)),ColorToBGRA(OutsideColor)));
+  PaintBox1.Canvas.Pen.Color := MergeBGRA(ColorToBGRA(clBlack),ColorToBGRA(FWorkspaceColor));
   PaintBox1.Canvas.Rectangle(0,0,PaintBox1.Width,PaintBox1.Height);
   PaintBox1.Canvas.Pen.Style := psDot;
   PaintBox1.Canvas.Pen.Color := clBlack;

+ 8 - 0
lazpaint/lazpaintmainform.lfm

@@ -6564,6 +6564,11 @@ object FMain: TFMain
       OnExecute = ScriptExecute
       OnUpdate = LayerRasterizeUpdate
     end
+    object ViewWorkspaceColor: TAction
+      Category = 'View'
+      Caption = 'Set workspace color...'
+      OnExecute = ViewWorkspaceColorExecute
+    end
   end
   object ColorDialog1: TColorDialog
     Title = 'Choose color'
@@ -6704,6 +6709,9 @@ object FMain: TFMain
       object ItemViewGrid: TMenuItem
         Action = ViewGrid
       end
+      object ItemWorkspaceColor: TMenuItem
+        Action = ViewWorkspaceColor
+      end
     end
     object MenuImage: TMenuItem
       Caption = 'Image'

+ 4 - 5
lazpaint/lazpaintmainform.pas

@@ -28,8 +28,10 @@ type
   { TFMain }
 
   TFMain = class(TForm)
+    ViewWorkspaceColor: TAction;
     LayerRasterize: TAction;
     FileRememberSaveFormat: TAction;
+    ItemWorkspaceColor: TMenuItem;
     SelectionVerticalFlip: TAction;
     SelectionHorizontalFlip: TAction;
     LayerZoom: TAction;
@@ -645,6 +647,7 @@ type
     procedure ViewToolboxExecute(Sender: TObject);
     procedure SpinEdit_PenWidthExit(Sender: TObject);
     procedure SpinEdit_GridNbExit(Sender: TObject);
+    procedure ViewWorkspaceColorExecute(Sender: TObject);
     procedure WMEraseBkgnd(var {%H-}Message: TLMEraseBkgnd); message LM_ERASEBKGND;
 
   private
@@ -791,7 +794,6 @@ type
 
   public
     { public declarations }
-    FormBackgroundColor: TColor;
     UpdateStackOnTimer: boolean;
     Zoom: TZoom;
 
@@ -836,9 +838,6 @@ begin
   FImageView := nil;
 
   ScaleControl(Self,OriginalDPI);
-
-  //use background color
-  FormBackgroundColor := OutsideColor;
   self.Color := clBtnFace; //toolbar color inherited on mac
 
   {$IFDEF USEPAINTBOXPICTURE}
@@ -979,7 +978,7 @@ begin
 
   FImageView := TImageView.Create(LazPaintInstance, Zoom,
                 {$IFDEF USEPAINTBOXPICTURE}PaintBox_Picture.Canvas{$ELSE}self.Canvas{$ENDIF},
-                FormBackgroundColor);
+                config.GetWorkspaceColor);
 
   FImageActions := TImageActions.Create(LazPaintInstance);
   LazPaintInstance.EmbeddedResult := mrNone;

+ 0 - 1
lazpaint/lazpainttype.pas

@@ -100,7 +100,6 @@ const
                     true,true,true,true);
 
 const
-  OutsideColor = TColor($00E8D1BB);
   MinZoomForGrid = 4;
 
 type

+ 14 - 0
lazpaint/maintoolbar.inc

@@ -595,6 +595,20 @@ begin
   if SpinEdit_GridNbY.Value < 2 then SpinEdit_GridNbY.Value := 2;
 end;
 
+procedure TFMain.ViewWorkspaceColorExecute(Sender: TObject);
+begin
+  ColorDialog1.Color:= Config.GetWorkspaceColor;
+  if ColorDialog1.Execute then
+  begin
+    Config.SetWorkspaceColor(ColorDialog1.Color);
+    if Assigned(FImageView) then
+    begin
+      FImageView.WorkspaceColor := ColorDialog1.Color;
+      FImageView.InvalidatePicture(False, FLayout.WorkArea, Point(0,0), self);
+    end;
+  end;
+end;
+
 procedure TFMain.SpinEdit_TextOutlineWidthChange(Sender: TObject);
 begin
   if initialized then

+ 4 - 0
lazpaint/release/bin/i18n/lazpaint.ar.po

@@ -1916,6 +1916,10 @@ msgstr ""
 msgid "Toolbox"
 msgstr "علبة الأدوات"
 
+#: tfmain.viewworkspacecolor.caption
+msgid "Set workspace color..."
+msgstr ""
+
 #: tfmain.viewzoomfit.caption
 msgctxt "tfmain.viewzoomfit.caption"
 msgid "Zoom fit"

+ 4 - 0
lazpaint/release/bin/i18n/lazpaint.cs.po

@@ -1903,6 +1903,10 @@ msgstr ""
 msgid "Toolbox"
 msgstr "Nástojový panel"
 
+#: tfmain.viewworkspacecolor.caption
+msgid "Set workspace color..."
+msgstr ""
+
 #: tfmain.viewzoomfit.caption
 msgctxt "tfmain.viewzoomfit.caption"
 msgid "Zoom fit"

+ 4 - 0
lazpaint/release/bin/i18n/lazpaint.de.po

@@ -1921,6 +1921,10 @@ msgstr ""
 msgid "Toolbox"
 msgstr "Werkzeugleiste"
 
+#: tfmain.viewworkspacecolor.caption
+msgid "Set workspace color..."
+msgstr ""
+
 #: tfmain.viewzoomfit.caption
 msgctxt "tfmain.viewzoomfit.caption"
 msgid "Zoom fit"

+ 4 - 0
lazpaint/release/bin/i18n/lazpaint.es.po

@@ -1898,6 +1898,10 @@ msgstr "Barra de estado"
 msgid "Toolbox"
 msgstr "Herramientas"
 
+#: tfmain.viewworkspacecolor.caption
+msgid "Set workspace color..."
+msgstr "Color del área de trabajo..."
+
 #: tfmain.viewzoomfit.caption
 msgctxt "tfmain.viewzoomfit.caption"
 msgid "Zoom fit"

+ 4 - 0
lazpaint/release/bin/i18n/lazpaint.fi.po

@@ -1888,6 +1888,10 @@ msgstr ""
 msgid "Toolbox"
 msgstr "Työkalut"
 
+#: tfmain.viewworkspacecolor.caption
+msgid "Set workspace color..."
+msgstr ""
+
 #: tfmain.viewzoomfit.caption
 msgctxt "tfmain.viewzoomfit.caption"
 msgid "Zoom fit"

+ 4 - 0
lazpaint/release/bin/i18n/lazpaint.fr.po

@@ -1905,6 +1905,10 @@ msgstr "Barre d'état"
 msgid "Toolbox"
 msgstr "Outils"
 
+#: tfmain.viewworkspacecolor.caption
+msgid "Set workspace color..."
+msgstr "Couleur de l'espace de travail..."
+
 #: tfmain.viewzoomfit.caption
 msgctxt "tfmain.viewzoomfit.caption"
 msgid "Zoom fit"

+ 4 - 0
lazpaint/release/bin/i18n/lazpaint.ja.po

@@ -1911,6 +1911,10 @@ msgstr ""
 msgid "Toolbox"
 msgstr "ツールボックス"
 
+#: tfmain.viewworkspacecolor.caption
+msgid "Set workspace color..."
+msgstr ""
+
 #: tfmain.viewzoomfit.caption
 msgctxt "tfmain.viewzoomfit.caption"
 msgid "Zoom fit"

+ 4 - 0
lazpaint/release/bin/i18n/lazpaint.lv.po

@@ -1904,6 +1904,10 @@ msgstr ""
 msgid "Toolbox"
 msgstr "Rīku kaste"
 
+#: tfmain.viewworkspacecolor.caption
+msgid "Set workspace color..."
+msgstr ""
+
 #: tfmain.viewzoomfit.caption
 msgctxt "tfmain.viewzoomfit.caption"
 msgid "Zoom fit"

+ 4 - 0
lazpaint/release/bin/i18n/lazpaint.nl.po

@@ -1929,6 +1929,10 @@ msgstr ""
 msgid "Toolbox"
 msgstr "Gereedschapskist"
 
+#: tfmain.viewworkspacecolor.caption
+msgid "Set workspace color..."
+msgstr ""
+
 #: tfmain.viewzoomfit.caption
 msgctxt "tfmain.viewzoomfit.caption"
 msgid "Zoom fit"

+ 4 - 0
lazpaint/release/bin/i18n/lazpaint.po

@@ -1888,6 +1888,10 @@ msgstr ""
 msgid "Toolbox"
 msgstr ""
 
+#: tfmain.viewworkspacecolor.caption
+msgid "Set workspace color..."
+msgstr ""
+
 #: tfmain.viewzoomfit.caption
 msgctxt "tfmain.viewzoomfit.caption"
 msgid "Zoom fit"

+ 4 - 0
lazpaint/release/bin/i18n/lazpaint.pt_BR.po

@@ -1914,6 +1914,10 @@ msgstr ""
 msgid "Toolbox"
 msgstr "Barra de ferramentas"
 
+#: tfmain.viewworkspacecolor.caption
+msgid "Set workspace color..."
+msgstr ""
+
 #: tfmain.viewzoomfit.caption
 msgctxt "tfmain.viewzoomfit.caption"
 msgid "Zoom fit"

+ 4 - 0
lazpaint/release/bin/i18n/lazpaint.ru.po

@@ -1906,6 +1906,10 @@ msgstr ""
 msgid "Toolbox"
 msgstr "Инструменты"
 
+#: tfmain.viewworkspacecolor.caption
+msgid "Set workspace color..."
+msgstr ""
+
 #: tfmain.viewzoomfit.caption
 msgctxt "tfmain.viewzoomfit.caption"
 msgid "Zoom fit"

+ 4 - 0
lazpaint/release/bin/i18n/lazpaint.sv.po

@@ -1896,6 +1896,10 @@ msgstr ""
 msgid "Toolbox"
 msgstr "Verktygslåda"
 
+#: tfmain.viewworkspacecolor.caption
+msgid "Set workspace color..."
+msgstr ""
+
 #: tfmain.viewzoomfit.caption
 msgctxt "tfmain.viewzoomfit.caption"
 msgid "Zoom fit"

BIN
lazpaint/release/bin/lazpaint


+ 12 - 0
lazpaint/uconfig.pas

@@ -167,6 +167,8 @@ type
 
     function GetStatusBarVisible: boolean;
     procedure SetStatusBarVisible(value: boolean);
+    function GetWorkspaceColor: TColor;
+    procedure SetWorkspaceColor(value: TColor);
     function DefaultUseImageBrowser: boolean;
     procedure SetDefaultUseImageBrowser(value: boolean);
 
@@ -681,6 +683,16 @@ begin
   iniOptions.WriteBool('Toolbar','StatusBar',value);
 end;
 
+function TLazPaintConfig.GetWorkspaceColor: TColor;
+begin
+  result := StrToBGRA(iniOptions.ReadString('General','WorkspaceColor', '#BBD1E8'), clAppWorkspace);
+end;
+
+procedure TLazPaintConfig.SetWorkspaceColor(value: TColor);
+begin
+  iniOptions.WriteString('General','WorkspaceColor', BGRAToStr(value));
+end;
+
 function TLazPaintConfig.DefaultUseImageBrowser: boolean;
 begin
   result := iniOptions.ReadBool('General','UseImageBrowser',{$IFDEF DARWIN}false{$ELSE}true{$ENDIF});

+ 7 - 6
lazpaint/uimageview.pas

@@ -33,7 +33,7 @@ type
     end;
     FZoom: TZoom;
     FPictureCanvas: TCanvas;
-    FBackgroundColor: TColor;
+    FWorkspaceColor: TColor;
     function GetImage: TLazPaintImage;
     function GetRenderUpdateRectVS(AIncludeLastToolState: boolean): TRect;
     function GetFillSelectionHighlight: boolean;
@@ -48,7 +48,7 @@ type
     procedure PaintVirtualScreenCursor({%H-}ACanvasOfs: TPoint; {%H-}AWorkArea: TRect; {%H-}AWinControlOfs: TPoint; {%H-}AWinControl: TWinControl);
     function GetRectToInvalidate(AInvalidateAll: boolean; AWorkArea: TRect): TRect;
   public
-    constructor Create(AInstance: TLazPaintCustomInstance; AZoom: TZoom; ACanvas: TCanvas; ABackgroundColor: TColor);
+    constructor Create(AInstance: TLazPaintCustomInstance; AZoom: TZoom; ACanvas: TCanvas; AWorkspaceColor: TColor);
     destructor Destroy; override;
     procedure DoPaint(ACanvasOfs: TPoint; AWorkArea: TRect; AShowNoPicture: boolean);
     procedure InvalidatePicture(AInvalidateAll: boolean; AWorkArea: TRect; AControlOfs: TPoint; AWinControl: TWinControl);
@@ -67,6 +67,7 @@ type
     property LazPaintInstance: TLazPaintCustomInstance read FInstance;
     property PictureCanvas: TCanvas read FPictureCanvas;
     property FillSelectionHighlight: boolean read GetFillSelectionHighlight write SetFillSelectionHighlight;
+    property WorkspaceColor: TColor read FWorkspaceColor write FWorkspaceColor;
   end;
 
 implementation
@@ -235,7 +236,7 @@ begin
     scaledArea := FLastPictureParameters.scaledArea;
     with PictureCanvas do
     begin
-      Brush.Color := FBackgroundColor;
+      Brush.Color := FWorkspaceColor;
       DrawOfs := ACanvasOfs;
       if scaledArea.Left > workArea.Left then
         FillRect(workArea.Left+DrawOfs.X,scaledArea.Top+DrawOfs.Y,scaledArea.Left+DrawOfs.X,scaledArea.Bottom+DrawOfs.Y);
@@ -257,7 +258,7 @@ begin
   if (AWorkArea.Right <= AWorkArea.Left) or (AWorkArea.Bottom <= AWorkArea.Top) then exit;
   with PictureCanvas do
   begin
-    Brush.Color := FBackgroundColor;
+    Brush.Color := FWorkspaceColor;
     DrawOfs := ACanvasOfs;
     FillRect(AWorkArea.Left+DrawOfs.X,AWorkArea.Top+DrawOfs.Y,AWorkArea.Right+DrawOfs.X,AWorkArea.Bottom+DrawOfs.Y);
   end;
@@ -265,12 +266,12 @@ begin
 end;
 
 constructor TImageView.Create(AInstance: TLazPaintCustomInstance; AZoom: TZoom;
-  ACanvas: TCanvas; ABackgroundColor: TColor);
+  ACanvas: TCanvas; AWorkspaceColor: TColor);
 begin
   FInstance := AInstance;
   FZoom := AZoom;
   FPictureCanvas := ACanvas;
-  FBackgroundColor := ABackgroundColor;
+  FWorkspaceColor := AWorkspaceColor;
 
   FVirtualScreen := nil;
   FLastPictureParameters.defined:= false;