Commit: 4a7d9697027e506cfc3afe6de8021a08a1ce9c2b
Author: Antonio Vazquez
Date:   Fri Mar 2 21:13:06 2018 +0100
Branches: greasepencil-object
https://developer.blender.org/rB4a7d9697027e506cfc3afe6de8021a08a1ce9c2b

Cleanup: Move eraser brush draw to function and avoid duplicated code

===================================================================

M       source/blender/editors/gpencil/gpencil_paint.c
M       source/blender/editors/gpencil/gpencil_utils.c
M       source/blender/editors/include/ED_gpencil.h

===================================================================

diff --git a/source/blender/editors/gpencil/gpencil_paint.c 
b/source/blender/editors/gpencil/gpencil_paint.c
index 3ae1c7bdf94..d1232fce3a3 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -1982,44 +1982,12 @@ static void gp_paint_cleanup(tGPsdata *p)
 /* ------------------------------- */
 
 /* Helper callback for drawing the cursor itself */
-static void gpencil_draw_eraser(bContext *UNUSED(C), int x, int y, void *p_ptr)
+static void gpencil_draw_eraser(bContext *C, int x, int y, void *p_ptr)
 {
        tGPsdata *p = (tGPsdata *)p_ptr;
 
-       if (p->paintmode == GP_PAINTMODE_ERASER) {
-               Gwn_VertFormat *format = immVertexFormat();
-               const uint shdr_pos = GWN_vertformat_attr_add(format, "pos", 
GWN_COMP_F32, 2, GWN_FETCH_FLOAT);
-               immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
-
-               glEnable(GL_LINE_SMOOTH);
-               glEnable(GL_BLEND);
-               glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, 
GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
-
-               immUniformColor4ub(255, 100, 100, 20);
-               imm_draw_circle_fill_2d(shdr_pos, x, y, p->radius, 40);
-
-               immUnbindProgram();
-
-               immBindBuiltinProgram(GPU_SHADER_2D_LINE_DASHED_UNIFORM_COLOR);
-
-               float viewport_size[4];
-               glGetFloatv(GL_VIEWPORT, viewport_size);
-               immUniform2f("viewport_size", viewport_size[2], 
viewport_size[3]);
-
-               immUniformColor4f(1.0f, 0.39f, 0.39f, 0.78f);
-               immUniform1i("num_colors", 0);  /* "simple" mode */
-               immUniform1f("dash_width", 12.0f);
-               immUniform1f("dash_factor", 0.5f);
-
-               imm_draw_circle_wire_2d(shdr_pos, x, y, p->radius,
-                                    /* XXX Dashed shader gives bad results 
with sets of small segments currently,
-                                     *     temp hack around the issue. :( */
-                                    max_ii(8, p->radius / 2));  /* was fixed 
40 */
-
-               immUnbindProgram();
-
-               glDisable(GL_BLEND);
-               glDisable(GL_LINE_SMOOTH);
+       if ((p) && (p->paintmode == GP_PAINTMODE_ERASER)) {
+               ED_gpencil_brush_draw_eraser(C, p->brush, x, y);
        }
 }
 
diff --git a/source/blender/editors/gpencil/gpencil_utils.c 
b/source/blender/editors/gpencil/gpencil_utils.c
index 9ed28dd0d14..c61263d7025 100644
--- a/source/blender/editors/gpencil/gpencil_utils.c
+++ b/source/blender/editors/gpencil/gpencil_utils.c
@@ -1290,7 +1290,7 @@ static bool gp_check_cursor_region(bContext *C, int 
mval[2])
 }
 
 /* draw eraser cursor */
-static void gp_brush_draw_eraser(bContext *C, bGPDbrush *brush, int x, int y)
+void ED_gpencil_brush_draw_eraser(bContext *C, bGPDbrush *brush, int x, int y)
 {
        short radius = (short)brush->thickness;
 
@@ -1388,7 +1388,7 @@ static void gp_brush_drawcursor(bContext *C, int x, int 
y, void *customdata)
 
                        /* eraser has special shape and use a different shader 
program */
                        if (paintbrush->type == GP_BRUSH_TYPE_ERASE) {
-                               gp_brush_draw_eraser(C, paintbrush, x, y);
+                               ED_gpencil_brush_draw_eraser(C, paintbrush, x, 
y);
                                return;
                        }
 
diff --git a/source/blender/editors/include/ED_gpencil.h 
b/source/blender/editors/include/ED_gpencil.h
index 47fdbc3c133..feeb7c834d4 100644
--- a/source/blender/editors/include/ED_gpencil.h
+++ b/source/blender/editors/include/ED_gpencil.h
@@ -40,6 +40,7 @@ struct bGPDlayer;
 struct bGPDframe;
 struct bGPDstroke;
 struct bGPDspoint;
+struct bGPDbrush;
 
 struct Main;
 struct bContext;
@@ -183,6 +184,9 @@ void ED_gpencil_parent_location(struct Object *obact, 
struct bGPdata *gpd, struc
 /* reset parent matrix for all layers */
 void ED_gpencil_reset_layers_parent(struct Object *obact, struct bGPdata *gpd);
 
+/* cursor utilities */
+void ED_gpencil_brush_draw_eraser(struct bContext *C, struct bGPDbrush *brush, 
int x, int y);
+
 /* ----------- Add Primitive Utilities -------------- */
 
 void ED_gpencil_create_monkey(struct bContext *C, struct bGPdata *gpd);

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to