Преглед изворни кода

script view

zoom, grid visibility
johann пре 5 година
родитељ
комит
8cedfee33b
3 измењених фајлова са 55 додато и 6 уклоњено
  1. 28 4
      lazpaint/lazpaintmainform.pas
  2. 22 0
      lazpaintscripts/lazpaint/view.py
  3. 5 2
      lazpaintscripts/test_pixel.py

+ 28 - 4
lazpaint/lazpaintmainform.pas

@@ -824,9 +824,12 @@ type
     function ScriptChooseTool(AVars: TVariableSet): TScriptResult;
     function ScriptViewZoomIn({%H-}AVars: TVariableSet): TScriptResult;
     function ScriptViewZoomOut({%H-}AVars: TVariableSet): TScriptResult;
+    function ScriptViewZoomGet({%H-}AVars: TVariableSet): TScriptResult;
+    function ScriptViewZoomSet({%H-}AVars: TVariableSet): TScriptResult;
     function ScriptViewZoomOriginal({%H-}AVars: TVariableSet): TScriptResult;
     function ScriptViewZoomFit({%H-}AVars: TVariableSet): TScriptResult;
     function ScriptViewGrid(AVars: TVariableSet): TScriptResult;
+    function ScriptViewGridGet(AVars: TVariableSet): TScriptResult;
     function GetScriptContext: TScriptContext;
     procedure CallScriptFunction(AName:string); overload;
     procedure CallScriptFunction(AParams:TVariableSet); overload;
@@ -1144,9 +1147,12 @@ begin
   Scripting.RegisterScriptFunction('ChooseTool',@ScriptChooseTool,ARegister);
   Scripting.RegisterScriptFunction('ViewZoomIn',@ScriptViewZoomIn,ARegister);
   Scripting.RegisterScriptFunction('ViewZoomOut',@ScriptViewZoomOut,ARegister);
+  Scripting.RegisterScriptFunction('ViewZoomGet',@ScriptViewZoomGet,ARegister);
+  Scripting.RegisterScriptFunction('ViewZoomSet',@ScriptViewZoomSet,ARegister);
   Scripting.RegisterScriptFunction('ViewZoomOriginal',@ScriptViewZoomOriginal,ARegister);
   Scripting.RegisterScriptFunction('ViewZoomFit',@ScriptViewZoomFit,ARegister);
   Scripting.RegisterScriptFunction('ViewGrid',@ScriptViewGrid,ARegister);
+  Scripting.RegisterScriptFunction('ViewGridGet',@ScriptViewGridGet,ARegister);
 end;
 
 procedure TFMain.FormMouseDown(Sender: TObject; Button: TMouseButton;
@@ -3055,22 +3061,34 @@ end;
 
 function TFMain.ScriptViewZoomIn(AVars: TVariableSet): TScriptResult;
 begin
-  Zoom.ZoomIn;
+  Zoom.ZoomIn(AVars.Booleans['Fine']);
   result := srOk;
 end;
 
 function TFMain.ScriptViewZoomOut(AVars: TVariableSet): TScriptResult;
 begin
-  Zoom.ZoomOut;
+  Zoom.ZoomOut(AVars.Booleans['Fine']);
   result := srOk;
 end;
 
-function TFMain.ScriptViewZoomOriginal(AVars: TVariableSet): TScriptResult;
+function TFMain.ScriptViewZoomGet(AVars: TVariableSet): TScriptResult;
 begin
-  Zoom.ZoomOriginal;
+  AVars.Floats['Result'] := Zoom.Factor;
   result := srOk;
 end;
 
+function TFMain.ScriptViewZoomSet(AVars: TVariableSet): TScriptResult;
+begin
+  Zoom.Factor := AVars.Floats['Factor'];
+  result := srOk;
+end;
+
+function TFMain.ScriptViewZoomOriginal(AVars: TVariableSet): TScriptResult;
+begin
+  AVars.Floats['Factor'] := 1;
+  result := GetScriptContext.CallScriptFunction(AVars, true);
+end;
+
 function TFMain.ScriptViewZoomFit(AVars: TVariableSet): TScriptResult;
 begin
   Image.ZoomFit;
@@ -3088,6 +3106,12 @@ begin
   result := srOk;
 end;
 
+function TFMain.ScriptViewGridGet(AVars: TVariableSet): TScriptResult;
+begin
+  AVars.Booleans['Result'] := LazPaintInstance.GridVisible;
+  result := srOk;
+end;
+
 procedure TFMain.BrushCreateGeometricExecute(Sender: TObject);
 var b: TLazPaintBrush;
 begin

+ 22 - 0
lazpaintscripts/lazpaint/view.py

@@ -0,0 +1,22 @@
+from lazpaint import command
+
+def zoom_in(fine=False):
+  command.send("ViewZoomIn", Fine=fine)
+
+def zoom_out(fine=False):
+  command.send("ViewZoomOut", Fine=fine)
+
+def zoom_fit():
+  command.send("ViewZoomFit")
+
+def set_zoom(factor=1):
+  command.send("ViewZoomSet", Factor=factor)
+
+def get_zoom():
+  return command.send("ViewZoomGet?")
+
+def set_grid_visible(visible=None):
+  command.send("ViewGrid", Visible=visible)
+
+def get_grid_visible():
+  return command.send("ViewGridGet?")

+ 5 - 2
lazpaintscripts/test_pixel.py

@@ -1,5 +1,6 @@
-from lazpaint import image, layer, dialog, colors
+from lazpaint import image, layer, dialog, colors, view
 
+view.set_zoom(1)
 width = 256
 height = 256
 image.new(width, height)
@@ -15,4 +16,6 @@ if layer.get_pixel(192,64).green != 192:
 else:
   dialog.show_message("Test successful.")
   
-
+view.zoom_fit()
+view.set_zoom(10)
+view.set_grid_visible(True)