*/}}
Browse Source

Brush size adjustment shortcut

YimingWu 3 months ago
parent
commit
dd281968e2
2 changed files with 32 additions and 0 deletions
  1. 29 0
      ouroperations.c
  2. 3 0
      ourpaint.h

+ 29 - 0
ouroperations.c

@@ -2438,6 +2438,31 @@ int ourinv_CycleSketch(laOperator* a, laEvent* e){
     laMarkMemChanged(Our->CanvasSaverDummyList.pFirst);
 }
 
+int ourinv_AdjustBrush(laOperator* a, laEvent* e){
+    OurCanvasDraw *ex = a->This?a->This->EndInstance:0; if(!ex) return LA_FINISHED;
+    ex->CanvasDownX = e->x; ex->CanvasDownY=e->y; ex->LastSize=Our->BrushSize; ex->LastNumber=Our->BrushNumber;
+    return LA_RUNNING;
+}
+int ourmod_AdjustBrushSize(laOperator* a, laEvent* e){
+    OurCanvasDraw *ex = a->This?a->This->EndInstance:0; if(!ex) return LA_FINISHED;
+    if((e->type&LA_MOUSE_EVENT)&&(e->type&LA_STATE_DOWN)){ return LA_FINISHED; }
+    if(e->key == LA_KEY_ESCAPE || e->key==LA_KEY_ENTER){ return LA_FINISHED; }
+    if(Our->BrushNumber!=0){
+        real dist = e->x-ex->CanvasDownX+ex->CanvasDownY-e->y;
+        int number = dist/LA_RH + ex->LastNumber;
+        TNS_CLAMP(number,1,10);
+        ourset_BrushNumber(0,number);
+        laNotifyUsers("our.canvas_notify");
+    }else{
+        real dist = e->x-ex->CanvasDownX+ex->CanvasDownY-e->y;
+        real newsize = dist/LA_RH + ex->LastSize;
+        TNS_CLAMP(newsize,0.001,10);
+        ourset_BrushSize(0,newsize);
+        laNotifyUsers("our.canvas_notify");
+    }
+    return LA_RUNNING;
+}
+
 void our_SmoothGlobalInput(real *x, real *y, int reset){
     if(reset){ Our->LastX=*x; Our->LastY=*y; return; }
     else{
@@ -3268,6 +3293,7 @@ void ourRegisterEverything(){
     laCreateOperatorType("OUR_set_brush_number","Set Brush Number","Choose a numbered brush",0,0,0,ourinv_BrushSetNumber,0,0,0);
     laCreateOperatorType("OUR_action","Action","Doing action on a layer",0,0,0,ourinv_Action,ourmod_Action,0,LA_EXTRA_TO_PANEL);
     laCreateOperatorType("OUR_pick","Pick color","Pick color on the widget",0,0,0,ourinv_PickColor,ourmod_PickColor,0,LA_EXTRA_TO_PANEL);
+    laCreateOperatorType("OUR_adjust_brush","Adjust brush","Adjust brush",0,0,0,ourinv_AdjustBrush,ourmod_AdjustBrushSize,0,LA_EXTRA_TO_PANEL);
     at=laCreateOperatorType("OUR_export_image","Export Image","Export the image",ourchk_ExportImage,0,ourexit_ExportImage,ourinv_ExportImage,ourmod_ExportImage,U'🖼',0);
     at->UiDefine=ourui_ExportImage; pc=laDefineOperatorProps(at, 1);
     p=laAddEnumProperty(pc, "bit_depth","Bit Depth","How many bits per channel should be used",0,0,0,0,0,offsetof(OurPNGWriteExtra,BitDepth),0,0,0,0,0,0,0,0,0,0);
@@ -3585,6 +3611,7 @@ void ourRegisterEverything(){
     laAssignNewKey(km, 0, "LA_2d_view_zoom", LA_KM_SEL_UI_EXTRA, 0, LA_SIGNAL_EVENT, OUR_SIGNAL_ZOOM_IN, "direction=in");
     laAssignNewKey(km, 0, "OUR_pick", LA_KM_SEL_UI_EXTRA, 0, LA_SIGNAL_EVENT, OUR_SIGNAL_PICK, 0);
     laAssignNewKey(km, 0, "LA_2d_view_move", LA_KM_SEL_UI_EXTRA, 0, LA_SIGNAL_EVENT, OUR_SIGNAL_MOVE, 0);
+    laAssignNewKey(km, 0, "OUR_adjust_brush", LA_KM_SEL_UI_EXTRA, 0, LA_SIGNAL_EVENT, OUR_SIGNAL_ADJUST, 0);
 
     km=&MAIN.KeyMap; char buf[128];
     for(int i=0;i<=9;i++){
@@ -3625,6 +3652,7 @@ void ourRegisterEverything(){
     laNewCustomSignal("our.brush_number_8",OUR_SIGNAL_SELECT_BRUSH_NUMBER_8);
     laNewCustomSignal("our.brush_number_9",OUR_SIGNAL_SELECT_BRUSH_NUMBER_9);
     laNewCustomSignal("our.brush_free",OUR_SIGNAL_SELECT_BRUSH_FREE);
+    laNewCustomSignal("our.adjust",OUR_SIGNAL_ADJUST);
 
     laInputMapping* im=MAIN.InputMapping->CurrentInputMapping;
     if(!im) im=laNewInputMapping("Our Paint Default");
@@ -3646,6 +3674,7 @@ void ourRegisterEverything(){
     laNewInputMappingEntryP(im,LA_INPUT_DEVICE_KEYBOARD,0,"Num8",0,OUR_SIGNAL_SELECT_BRUSH_NUMBER_8);
     laNewInputMappingEntryP(im,LA_INPUT_DEVICE_KEYBOARD,0,"Num9",0,OUR_SIGNAL_SELECT_BRUSH_NUMBER_9);
     laNewInputMappingEntryP(im,LA_INPUT_DEVICE_KEYBOARD,0,"NumDot",0,OUR_SIGNAL_SELECT_BRUSH_FREE);
+    laNewInputMappingEntryP(im,LA_INPUT_DEVICE_KEYBOARD,0,"f",0,OUR_SIGNAL_ADJUST);
 
     laAssignNewKey(km, 0, "LA_undo", 0, LA_KEY_CTRL, LA_KEY_DOWN, ']', 0);
     laAssignNewKey(km, 0, "LA_redo", 0, LA_KEY_CTRL, LA_KEY_DOWN, '[', 0);

+ 3 - 0
ourpaint.h

@@ -80,6 +80,7 @@ extern const char OUR_DESKTOP[];
 #define OUR_SIGNAL_SELECT_BRUSH_NUMBER_8 18
 #define OUR_SIGNAL_SELECT_BRUSH_NUMBER_9 19
 #define OUR_SIGNAL_SELECT_BRUSH_FREE 20
+#define OUR_SIGNAL_ADJUST 21
 
 STRUCTURE(OurCanvasDraw){
     laCanvasExtra Base;
@@ -91,6 +92,8 @@ STRUCTURE(OurCanvasDraw){
     real LastPressure;
     real LastTilt[2];
     real LastTwist;
+    real LastSize;
+    int LastNumber;
     int MovedX,MovedY;
 };