[Bf-blender-cvs] [af29a17c325] temp-lineart-contained: LineArt: use name lineart_get_bounding_area_deep() to clarify.
YimingWu
noreply at git.blender.org
Fri Mar 12 05:29:28 CET 2021
Commit: af29a17c3250dd4c3b64e7c09b17b14df9279e1a
Author: YimingWu
Date: Fri Mar 12 12:29:03 2021 +0800
Branches: temp-lineart-contained
https://developer.blender.org/rBaf29a17c3250dd4c3b64e7c09b17b14df9279e1a
LineArt: use name lineart_get_bounding_area_deep() to clarify.
===================================================================
M source/blender/gpencil_modifiers/intern/lineart/ED_lineart.h
M source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c
M source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
===================================================================
diff --git a/source/blender/gpencil_modifiers/intern/lineart/ED_lineart.h b/source/blender/gpencil_modifiers/intern/lineart/ED_lineart.h
index 6e403eb497a..c9dac052397 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/ED_lineart.h
+++ b/source/blender/gpencil_modifiers/intern/lineart/ED_lineart.h
@@ -517,9 +517,9 @@ LineartBoundingArea *ED_lineart_get_point_bounding_area_rb(LineartRenderBuffer *
double x,
double y);
-LineartBoundingArea *ED_lineart_get_point_bounding_area_recursive_rb(LineartRenderBuffer *rb,
- double x,
- double y);
+LineartBoundingArea *ED_lineart_get_point_bounding_area_deep_rb(LineartRenderBuffer *rb,
+ double x,
+ double y);
struct bGPDlayer;
struct bGPDframe;
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c
index 41fdfc8b1ad..02fd3553658 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c
@@ -230,7 +230,7 @@ void ED_lineart_chain_feature_lines(LineartRenderBuffer *rb)
}
/* step 1: grow left. */
- ba = ED_lineart_get_point_bounding_area_recursive_rb(rb, rl->l->fbcoord[0], rl->l->fbcoord[1]);
+ ba = ED_lineart_get_point_bounding_area_deep_rb(rb, rl->l->fbcoord[0], rl->l->fbcoord[1]);
new_rv = rl->l;
rls = rl->segments.first;
VERT_COORD_TO_FLOAT(new_rv);
@@ -317,8 +317,7 @@ void ED_lineart_chain_feature_lines(LineartRenderBuffer *rb)
last_transparency,
new_rl->r_obindex);
}
- ba = ED_lineart_get_point_bounding_area_recursive_rb(
- rb, new_rv->fbcoord[0], new_rv->fbcoord[1]);
+ ba = ED_lineart_get_point_bounding_area_deep_rb(rb, new_rv->fbcoord[0], new_rv->fbcoord[1]);
}
/* Restore normal value. */
@@ -370,7 +369,7 @@ void ED_lineart_chain_feature_lines(LineartRenderBuffer *rb)
rl->r_obindex);
/* step 3: grow right. */
- ba = ED_lineart_get_point_bounding_area_recursive_rb(rb, rl->r->fbcoord[0], rl->r->fbcoord[1]);
+ ba = ED_lineart_get_point_bounding_area_deep_rb(rb, rl->r->fbcoord[0], rl->r->fbcoord[1]);
new_rv = rl->r;
/* below already done in step 2. */
/* lineart_chain_push_point(rb,rlc,new_rv->fbcoord[0],new_rv->fbcoord[1],rl->flags,0);
@@ -457,8 +456,7 @@ void ED_lineart_chain_feature_lines(LineartRenderBuffer *rb)
last_transparency,
new_rl->r_obindex);
}
- ba = ED_lineart_get_point_bounding_area_recursive_rb(
- rb, new_rv->fbcoord[0], new_rv->fbcoord[1]);
+ ba = ED_lineart_get_point_bounding_area_deep_rb(rb, new_rv->fbcoord[0], new_rv->fbcoord[1]);
}
if (rb->fuzzy_everything) {
rlc->type = LRT_EDGE_FLAG_CONTOUR;
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
index 478bb0170a6..02f9f8e1dbb 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
@@ -3167,16 +3167,57 @@ LineartBoundingArea *ED_lineart_get_point_bounding_area_rb(LineartRenderBuffer *
return &rb->initial_bounding_areas[row * 4 + col];
}
-static LineartBoundingArea *lineart_get_bounding_area(LineartRenderBuffer *rb, double x, double y);
+static LineartBoundingArea *lineart_get_bounding_area_deep(LineartRenderBuffer *rb,
+ double x,
+ double y)
+{
+ LineartBoundingArea *iba;
+ double sp_w = rb->width_per_tile, sp_h = rb->height_per_tile;
+ int c = (int)((x + 1.0) / sp_w);
+ int r = rb->tile_count_y - (int)((y + 1.0) / sp_h) - 1;
+ if (r < 0) {
+ r = 0;
+ }
+ if (c < 0) {
+ c = 0;
+ }
+ if (r >= rb->tile_count_y) {
+ r = rb->tile_count_y - 1;
+ }
+ if (c >= rb->tile_count_x) {
+ c = rb->tile_count_x - 1;
+ }
+
+ iba = &rb->initial_bounding_areas[r * 4 + c];
+ while (iba->child) {
+ if (x > iba->cx) {
+ if (y > iba->cy) {
+ iba = &iba->child[0];
+ }
+ else {
+ iba = &iba->child[3];
+ }
+ }
+ else {
+ if (y > iba->cy) {
+ iba = &iba->child[1];
+ }
+ else {
+ iba = &iba->child[2];
+ }
+ }
+ }
+ return iba;
+}
/* Wrapper for more convenience. */
-LineartBoundingArea *ED_lineart_get_point_bounding_area_recursive_rb(LineartRenderBuffer *rb,
- double x,
- double y)
+LineartBoundingArea *ED_lineart_get_point_bounding_area_deep_rb(LineartRenderBuffer *rb,
+ double x,
+ double y)
{
LineartBoundingArea *ba;
if ((ba = ED_lineart_get_point_bounding_area_rb(rb, x, y)) != NULL) {
- return lineart_get_bounding_area(rb, x, y);
+ return lineart_get_bounding_area_deep(rb, x, y);
}
return NULL;
}
@@ -3435,48 +3476,6 @@ static LineartBoundingArea *lineart_bounding_area_next(LineartBoundingArea *this
return 0;
}
-/* FIXME: Duplicated? */
-static LineartBoundingArea *lineart_get_bounding_area(LineartRenderBuffer *rb, double x, double y)
-{
- LineartBoundingArea *iba;
- double sp_w = rb->width_per_tile, sp_h = rb->height_per_tile;
- int c = (int)((x + 1.0) / sp_w);
- int r = rb->tile_count_y - (int)((y + 1.0) / sp_h) - 1;
- if (r < 0) {
- r = 0;
- }
- if (c < 0) {
- c = 0;
- }
- if (r >= rb->tile_count_y) {
- r = rb->tile_count_y - 1;
- }
- if (c >= rb->tile_count_x) {
- c = rb->tile_count_x - 1;
- }
-
- iba = &rb->initial_bounding_areas[r * 4 + c];
- while (iba->child) {
- if (x > iba->cx) {
- if (y > iba->cy) {
- iba = &iba->child[0];
- }
- else {
- iba = &iba->child[3];
- }
- }
- else {
- if (y > iba->cy) {
- iba = &iba->child[1];
- }
- else {
- iba = &iba->child[2];
- }
- }
- }
- return iba;
-}
-
static LineartBoundingArea *lineart_line_first_bounding_area(LineartRenderBuffer *rb,
LineartRenderLine *rl)
{
@@ -3485,7 +3484,7 @@ static LineartBoundingArea *lineart_line_first_bounding_area(LineartRenderBuffer
double r = 1, sr = 1;
if (data[0] > -1 && data[0] < 1 && data[1] > -1 && data[1] < 1) {
- return lineart_get_bounding_area(rb, data[0], data[1]);
+ return lineart_get_bounding_area_deep(rb, data[0], data[1]);
}
if (lineart_LineIntersectTest2d(rl->l->fbcoord, rl->r->fbcoord, LU, RU, &sr) && sr < r &&
@@ -3506,7 +3505,7 @@ static LineartBoundingArea *lineart_line_first_bounding_area(LineartRenderBuffer
}
interp_v2_v2v2_db(data, rl->l->fbcoord, rl->r->fbcoord, r);
- return lineart_get_bounding_area(rb, data[0], data[1]);
+ return lineart_get_bounding_area_deep(rb, data[0], data[1]);
}
/* Calculations. */
More information about the Bf-blender-cvs
mailing list