[Bf-blender-cvs] [716a772d1a3] lanpr-under-gp: LineArt: use LISTBASE_FOREACH in lineart_chain.c

YimingWu noreply at git.blender.org
Mon Aug 3 17:00:08 CEST 2020


Commit: 716a772d1a3e3cd7a93240ce26aff0f3318d38bc
Author: YimingWu
Date:   Mon Aug 3 22:59:34 2020 +0800
Branches: lanpr-under-gp
https://developer.blender.org/rB716a772d1a3e3cd7a93240ce26aff0f3318d38bc

LineArt: use LISTBASE_FOREACH in lineart_chain.c

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

M	source/blender/editors/lineart/lineart_chain.c

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

diff --git a/source/blender/editors/lineart/lineart_chain.c b/source/blender/editors/lineart/lineart_chain.c
index b35f0b9b3d2..e37b98b778c 100644
--- a/source/blender/editors/lineart/lineart_chain.c
+++ b/source/blender/editors/lineart/lineart_chain.c
@@ -51,10 +51,9 @@ static LineartRenderLine *lineart_line_get_connected(LineartBoundingArea *ba,
                                                      LineartRenderVert **new_rv,
                                                      int match_flag)
 {
-  LinkData *lip;
   LineartRenderLine *nrl;
 
-  for (lip = ba->linked_lines.first; lip; lip = lip->next) {
+  LISTBASE_FOREACH (LinkData *, lip, &ba->linked_lines) {
     nrl = lip->data;
 
     if ((!(nrl->flags & LRT_EDGE_FLAG_ALL_TYPE)) || (nrl->flags & LRT_EDGE_FLAG_CHAIN_PICKED)) {
@@ -194,12 +193,11 @@ void ED_lineart_chain_feature_lines(LineartRenderBuffer *rb)
 {
   LineartRenderLineChain *rlc;
   LineartRenderLineChainItem *rlci;
-  LineartRenderLine *rl;
   LineartBoundingArea *ba;
   LineartRenderLineSegment *rls;
   int last_occlusion;
 
-  for (rl = rb->all_render_lines.first; rl; rl = rl->next) {
+  LISTBASE_FOREACH (LineartRenderLine *, rl, &rb->all_render_lines) {
 
     if ((!(rl->flags & LRT_EDGE_FLAG_ALL_TYPE)) || (rl->flags & LRT_EDGE_FLAG_CHAIN_PICKED)) {
       continue;
@@ -554,7 +552,7 @@ static void lineart_bounding_area_link_chain(LineartRenderBuffer *rb, LineartRen
 void ED_lineart_chain_split_for_fixed_occlusion(LineartRenderBuffer *rb)
 {
   LineartRenderLineChain *rlc, *new_rlc;
-  LineartRenderLineChainItem *rlci, *next_rlci, *prev_rlci;
+  LineartRenderLineChainItem *rlci, *next_rlci;
   ListBase swap = {0};
 
   swap.first = rb->chains.first;
@@ -570,7 +568,6 @@ void ED_lineart_chain_split_for_fixed_occlusion(LineartRenderBuffer *rb)
     rlc->level = fixed_occ;
     for (rlci = first_rlci->next; rlci; rlci = next_rlci) {
       next_rlci = rlci->next;
-      prev_rlci = rlci->prev;
       if (rlci->occlusion != fixed_occ) {
         if (next_rlci) {
           if (lineart_point_overlapping(next_rlci, rlci->pos[0], rlci->pos[1], 1e-5)) {
@@ -607,8 +604,8 @@ void ED_lineart_chain_split_for_fixed_occlusion(LineartRenderBuffer *rb)
       }
     }
   }
-  for (rlc = rb->chains.first; rlc; rlc = rlc->next) {
-    lineart_bounding_area_link_chain(rb, rlc);
+  LISTBASE_FOREACH (LineartRenderLineChain *, irlc, &rb->chains) {
+    lineart_bounding_area_link_chain(rb, irlc);
   }
 }
 
@@ -663,17 +660,20 @@ static void lineart_chain_connect(LineartRenderBuffer *UNUSED(rb),
   }
 }
 
-LineartChainRegisterEntry *lineart_chain_get_closest_cre(LineartRenderBuffer *rb,
-                                                         LineartBoundingArea *ba,
-                                                         LineartRenderLineChain *rlc,
-                                                         LineartRenderLineChainItem *rlci,
-                                                         int occlusion,
-                                                         float dist,
-                                                         int do_geometry_space,
-                                                         float *result_new_len)
+static LineartChainRegisterEntry *lineart_chain_get_closest_cre(LineartRenderBuffer *rb,
+                                                                LineartBoundingArea *ba,
+                                                                LineartRenderLineChain *rlc,
+                                                                LineartRenderLineChainItem *rlci,
+                                                                int occlusion,
+                                                                float dist,
+                                                                int do_geometry_space,
+                                                                float *result_new_len)
 {
 
   LineartChainRegisterEntry *cre, *next_cre, *closest_cre = NULL;
+
+  /* Keep using for loop because cre could be removed from the iteration before getting to the
+   * next one. */
   for (cre = ba->linked_chains.first; cre; cre = next_cre) {
     next_cre = cre->next;
     if (cre->rlc->object_ref != rlc->object_ref) {
@@ -830,9 +830,8 @@ void ED_lineart_chain_discard_short(LineartRenderBuffer *rb, const float thresho
 
 int ED_lineart_chain_count(const LineartRenderLineChain *rlc)
 {
-  LineartRenderLineChainItem *rlci;
   int count = 0;
-  for (rlci = rlc->chain.first; rlci; rlci = rlci->next) {
+  LISTBASE_FOREACH (LineartRenderLineChainItem *, rlci, &rlc->chain) {
     count++;
   }
   return count;
@@ -840,11 +839,10 @@ int ED_lineart_chain_count(const LineartRenderLineChain *rlc)
 
 void ED_lineart_chain_clear_picked_flag(LineartRenderBuffer *rb)
 {
-  LineartRenderLineChain *rlc;
   if (rb == NULL) {
     return;
   }
-  for (rlc = rb->chains.first; rlc; rlc = rlc->next) {
+  LISTBASE_FOREACH (LineartRenderLineChain *, rlc, &rb->chains) {
     rlc->picked = 0;
   }
 }



More information about the Bf-blender-cvs mailing list