[Bf-blender-cvs] [081a964db55] greasepencil-object: GP: Cleanup code and comments
Antonioya
noreply at git.blender.org
Fri Dec 14 10:57:14 CET 2018
Commit: 081a964db55df80c8e96397032538753572ce383
Author: Antonioya
Date: Fri Dec 14 10:55:55 2018 +0100
Branches: greasepencil-object
https://developer.blender.org/rB081a964db55df80c8e96397032538753572ce383
GP: Cleanup code and comments
===================================================================
M source/blender/editors/gpencil/gpencil_primitive.c
===================================================================
diff --git a/source/blender/editors/gpencil/gpencil_primitive.c b/source/blender/editors/gpencil/gpencil_primitive.c
index 35167ad1b61..224145ddfe8 100644
--- a/source/blender/editors/gpencil/gpencil_primitive.c
+++ b/source/blender/editors/gpencil/gpencil_primitive.c
@@ -149,9 +149,7 @@ static void gp_init_colors(tGPDprimitive *p)
/* use brush material */
ma = BKE_gpencil_get_material_from_brush(brush);
- /* if no brush defaults, get material and color info
- * NOTE: Ensures that everything we need will exist...
- */
+ /* if no brush defaults, get material and color info */
if ((ma == NULL) || (ma->gp_style == NULL)) {
BKE_gpencil_material_ensure(p->bmain, p->ob);
@@ -187,6 +185,67 @@ static void gp_init_colors(tGPDprimitive *p)
}
}
+/* Helper to square a primitive */
+static void gpencil_primitive_to_square(tGPDprimitive *tgpi, const float x, const float y)
+{
+ float w = fabsf(x);
+ float h = fabsf(y);
+ if ((x > 0 && y > 0) || (x < 0 && y < 0)) {
+ if (w > h)
+ tgpi->end[1] = tgpi->origin[1] + x;
+ else
+ tgpi->end[0] = tgpi->origin[0] + y;
+ }
+ else {
+ if (w > h)
+ tgpi->end[1] = tgpi->origin[1] - x;
+ else
+ tgpi->end[0] = tgpi->origin[0] - y;
+ }
+}
+
+/* Helper to rotate point around origin */
+static void gp_rotate_v2_v2v2fl(float v[2], const float p[2], const float origin[2], const float angle)
+{
+ float pt[2];
+ float r[2];
+ sub_v2_v2v2(pt, p, origin);
+ rotate_v2_v2fl(r, pt, angle);
+ add_v2_v2v2(v, r, origin);
+}
+
+/* Helper to rotate line around line centre */
+static void gp_primitive_rotate_line(float va[2], float vb[2], const float a[2], const float b[2], const float angle)
+{
+ float midpoint[2];
+ mid_v2_v2v2(midpoint, a, b);
+ gp_rotate_v2_v2v2fl(va, a, midpoint, angle);
+ gp_rotate_v2_v2v2fl(vb, b, midpoint, angle);
+}
+
+/* Helper to update cps */
+static void gp_primitive_update_cps(tGPDprimitive *tgpi)
+{
+ if (!tgpi->curve) {
+ mid_v2_v2v2(tgpi->midpoint, tgpi->start, tgpi->end);
+ copy_v2_v2(tgpi->cp1, tgpi->midpoint);
+ copy_v2_v2(tgpi->cp2, tgpi->cp1);
+ }
+ else if (tgpi->type == GP_STROKE_CURVE) {
+ mid_v2_v2v2(tgpi->midpoint, tgpi->start, tgpi->end);
+ copy_v2_v2(tgpi->cp1, tgpi->midpoint);
+ copy_v2_v2(tgpi->cp2, tgpi->cp1);
+ }
+ else if (tgpi->type == GP_STROKE_ARC) {
+ if (tgpi->flip) {
+ gp_primitive_rotate_line(tgpi->cp1, tgpi->cp2, tgpi->start, tgpi->end, M_PI_2);
+ }
+ else {
+ gp_primitive_rotate_line(tgpi->cp1, tgpi->cp2, tgpi->end, tgpi->start, M_PI_2);
+ }
+ }
+}
+
/* Poll callback for primitive operators */
static bool gpencil_primitive_add_poll(bContext *C)
{
@@ -381,8 +440,6 @@ static void gpencil_primitive_status_indicators(bContext *C, tGPDprimitive *tgpi
ED_workspace_status_text(C, status_str);
}
-/* ----------------------- */
-
/* create a rectangle */
static void gp_primitive_rectangle(tGPDprimitive *tgpi, tGPspoint *points2D)
{
@@ -460,18 +517,6 @@ static void gp_primitive_line(tGPDprimitive *tgpi, tGPspoint *points2D)
gp_primitive_set_cp(tgpi, tgpi->start, color, BIG_SIZE_CTL);
}
-/* unused at the moment */
-void interp_v2_v2v2v2_quadratic(
- float p[2], const float v1[2], const float v2[2], const float v3[2], const float u)
-{
- float q0[2], q1[2];
-
- interp_v2_v2v2(q0, v1, v2, u);
- interp_v2_v2v2(q1, v2, v3, u);
-
- interp_v2_v2v2(p, q0, q1, u);
-}
-
/* create an arc */
static void gp_primitive_arc(tGPDprimitive *tgpi, tGPspoint *points2D)
{
@@ -556,7 +601,6 @@ static void gp_primitive_circle(tGPDprimitive *tgpi, tGPspoint *points2D)
float radius[2];
float a = 0.0f;
- /* TODO: Use math-lib functions for these? */
center[0] = tgpi->start[0] + ((tgpi->end[0] - tgpi->start[0]) / 2.0f);
center[1] = tgpi->start[1] + ((tgpi->end[1] - tgpi->start[1]) / 2.0f);
radius[0] = fabsf(((tgpi->end[0] - tgpi->start[0]) / 2.0f));
@@ -626,10 +670,12 @@ static void gp_primitive_update_strokes(bContext *C, tGPDprimitive *tgpi)
if (gset->flag & GP_SCULPT_SETT_FLAG_PRIMITIVE_CURVE) {
curvemapping_initialize(ts->gp_sculpt.cur_primitive);
}
- if(tgpi->brush->gpencil_settings->flag & GP_BRUSH_USE_JITTER_PRESSURE)
+ if (tgpi->brush->gpencil_settings->flag & GP_BRUSH_USE_JITTER_PRESSURE) {
curvemapping_initialize(tgpi->brush->gpencil_settings->curve_jitter);
- if(tgpi->brush->gpencil_settings->flag & GP_BRUSH_USE_STENGTH_PRESSURE)
+ }
+ if (tgpi->brush->gpencil_settings->flag & GP_BRUSH_USE_STENGTH_PRESSURE) {
curvemapping_initialize(tgpi->brush->gpencil_settings->curve_strength);
+ }
/* get an array of depths, far depths are blended */
float *depth_arr = NULL;
@@ -816,12 +862,12 @@ static void gp_primitive_update_strokes(bContext *C, tGPDprimitive *tgpi)
gpd->runtime.sbuffer_size++;
- /* convert screen-coordinates to 3D coordinates */
/* add small offset to keep stroke over the surface */
if ((depth_arr) && (gpd->zdepth_offset > 0.0f)) {
depth_arr[i] *= (1.0f - gpd->zdepth_offset);
}
+ /* convert screen-coordinates to 3D coordinates */
gp_stroke_convertcoords_tpoint(
tgpi->scene, tgpi->ar, tgpi->ob, tgpi->gpl,
p2d, depth_arr ? depth_arr + i : NULL,
@@ -889,8 +935,6 @@ static void gpencil_primitive_update(bContext *C, wmOperator *op, tGPDprimitive
gp_primitive_update_strokes(C, tgpi);
}
-/* ----------------------- */
-
static void gpencil_primitive_interaction_begin(tGPDprimitive *tgpi, const wmEvent *event)
{
copy_v2fl_v2i(tgpi->mval, event->mval);
@@ -947,7 +991,6 @@ static void gpencil_primitive_exit(bContext *C, wmOperator *op)
/* Init new temporary primitive data */
static void gpencil_primitive_init(bContext *C, wmOperator *op)
{
-
ToolSettings *ts = CTX_data_tool_settings(C);
bGPdata *gpd = CTX_data_gpencil_data(C);
Main *bmain = CTX_data_main(C);
@@ -996,15 +1039,29 @@ static void gpencil_primitive_init(bContext *C, wmOperator *op)
tgpi->curve = false;
/* set default edge count */
-
- if (tgpi->type == GP_STROKE_LINE)
- RNA_int_set(op->ptr, "edges", 8);
- else if (tgpi->type == GP_STROKE_BOX)
- RNA_int_set(op->ptr, "edges", 8);
- else if (tgpi->type == GP_STROKE_CIRCLE)
- RNA_int_set(op->ptr, "edges", 96);
- else
- RNA_int_set(op->ptr, "edges", 64);
+ switch (tgpi->type) {
+ case GP_STROKE_LINE:
+ {
+ RNA_int_set(op->ptr, "edges", 8);
+ break;
+ }
+ case GP_STROKE_BOX:
+ {
+ RNA_int_set(op->ptr, "edges", 8);
+ break;
+ }
+ case GP_STROKE_CIRCLE:
+ {
+ RNA_int_set(op->ptr, "edges", 96);
+ break;
+ }
+ default:
+ {
+ RNA_int_set(op->ptr, "edges", 64);
+ break;
+ }
+ }
+
tgpi->tot_stored_edges = 0;
tgpi->tot_edges = RNA_int_get(op->ptr, "edges");
tgpi->flag = IDLE;
@@ -1014,8 +1071,6 @@ static void gpencil_primitive_init(bContext *C, wmOperator *op)
gp_primitive_set_initdata(C, tgpi);
}
-/* ----------------------- */
-
/* Invoke handler: Initialize the operator */
static int gpencil_primitive_invoke(bContext *C, wmOperator *op, const wmEvent *event)
{
@@ -1101,67 +1156,6 @@ static void gpencil_primitive_interaction_end(bContext *C, wmOperator *op, wmWin
gpencil_primitive_exit(C, op);
}
-/* Helper to square a primitive */
-static void gpencil_primitive_to_square(tGPDprimitive *tgpi, const float x, const float y)
-{
- float w = fabsf(x);
- float h = fabsf(y);
- if ((x > 0 && y > 0) || (x < 0 && y < 0)) {
- if (w > h)
- tgpi->end[1] = tgpi->origin[1] + x;
- else
- tgpi->end[0] = tgpi->origin[0] + y;
- }
- else {
- if (w > h)
- tgpi->end[1] = tgpi->origin[1] - x;
- else
- tgpi->end[0] = tgpi->origin[0] - y;
- }
-}
-
-/* Helper to rotate point around origin */
-static void gp_rotate_v2_v2v2fl(float v[2], const float p[2], const float origin[2], const float angle)
-{
- float pt[2];
- float r[2];
- sub_v2_v2v2(pt, p, origin);
- rotate_v2_v2fl(r, pt, angle);
- add_v2_v2v2(v, r, origin);
-}
-
-/* Helper to rotate line around line centre */
-static void gp_primitive_rotate_line(float va[2], float vb[2], const float a[2], const float b[2], const float angle)
-{
- float midpoint[2];
- mid_v2_v2v2(midpoint, a, b);
- gp_rotate_v2_v2v2fl(va, a, midpoint, angle);
- gp_rotate_v2_v2v2fl(vb, b, midpoint, angle);
-}
-
-/* Helper to update cps */
-static void gp_primitive_update_cps(tGPDprimitive *tgpi)
-{
- if (!tgpi->curve) {
- mid_v2_v2v2(tgpi->midpoint, tgpi->start, tgpi->end);
- copy_v2_v2(tgpi->cp1, tgpi->midpoint);
- copy_v2_v2(tgpi->cp2, tgpi->cp1);
- }
- else if (tgpi->type == GP_STROKE_CURVE) {
- mid_v2_v2v2(tgpi->midpoint, tgpi->start, tgpi->end);
- copy_v2_v2(tgpi->cp1, tgpi->midpoint);
- copy_v2_v2(tgpi->cp2, tgpi->cp1);
- }
- else if (tgpi->type == GP_STROKE_ARC) {
- if (tgpi->flip) {
- gp_primitive_rotate_line(tgpi->cp1, tgpi->cp2, tgpi->start, tgpi->end, M_PI_2);
- }
- else {
- gp_primitive_rotate_line(tgpi->cp1, tgpi->cp2, tgpi->end, tgpi->start, M_PI_2);
- }
- }
-}
-
/* edit event handling */
static void gpencil_primitive_edit_event_handling(bContext *C, wmOperator *op, wmWindow *win, const wmEvent *event, tGPDprimitive *tgpi)
{
@@ -1317,115 +1311,115 @@ static int gpencil_primitive_modal(bContext *C, wmOperator *op, const wmEvent *e
else if (tgpi->flag != IDLE) {
gpencil_primitive_edit_event_handling(C, op, win, event, tgpi);
}
-
+
switch (event->type) {
- case LEFTMOUSE:
- {
- if ((event->val == KM_PRESS) && (tgpi->flag == IDLE)) {
- /* start drawing primitive */
- /* TODO: Ignore if not in main region yet */
- tgpi->flag = IN_PROGRESS;
- gpencil_primitive_interaction_begin(tgpi, event);
- }
- else if ((event->val == KM_RELEASE) && (tgpi->flag == IN_MOVE)) {
- tgpi->flag = IN_CURVE_EDIT;
- }
- else if ((event->val == KM_RELEASE) && (tgpi->flag == IN_PROGRESS)) {
- /* set control points and enter edit mode */
- tgpi->flag = IN_CURVE_EDIT;
- gp_primitive_update_cps(tgpi);
- gpencil_primitive_update(C, op, tgpi);
- }
- else if ((event->val == KM_RELEASE) && (tgpi->flag == IN_PROGRESS) && (tgpi->type != GP_STROKE_CURVE)) {
- /* stop drawing primitive */
- tgpi->flag = IDLE;
- gpencil_primitive_interaction_end(C, op, win, tgpi);
- /* done! */
- return OPERATOR_FINISHED;
- }
- else {
- if (G.debug & G_DEBUG) {
- printf("GP Add Primitive Modal: LEFTMOUSE %d, Status = %d\n",
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list