[Bf-blender-cvs] [6cbb2ffb0cf] lanpr-under-gp: LineArt: Use LISTBASE_FOREACH

YimingWu noreply at git.blender.org
Tue Jul 7 17:30:46 CEST 2020


Commit: 6cbb2ffb0cf98d2fb4d28b0b4041651c8936dd79
Author: YimingWu
Date:   Tue Jul 7 23:30:41 2020 +0800
Branches: lanpr-under-gp
https://developer.blender.org/rB6cbb2ffb0cf98d2fb4d28b0b4041651c8936dd79

LineArt: Use LISTBASE_FOREACH

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

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

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

diff --git a/source/blender/editors/lineart/lineart_cpu.c b/source/blender/editors/lineart/lineart_cpu.c
index 3d43cac0d76..e761ee45651 100644
--- a/source/blender/editors/lineart/lineart_cpu.c
+++ b/source/blender/editors/lineart/lineart_cpu.c
@@ -148,6 +148,7 @@ static void lineart_cut_render_line(LineartRenderBuffer *rb,
     end = t;
   }
 
+  /* Keeping the loop in this function for clarity in iterating through the segments. */
   for (rls = rl->segments.first; rls; rls = rls->next) {
     if (TNS_DOUBLE_CLOSE_ENOUGH(rls->at, begin)) {
       begin_segment = rls;
@@ -234,7 +235,7 @@ static void lineart_cut_render_line(LineartRenderBuffer *rb,
   }
 
   char min_occ = 127;
-  for (rls = rl->segments.first; rls; rls = rls->next) {
+  LISTBASE_FOREACH (LineartRenderLineSegment *, rls, &rl->segments) {
     min_occ = MIN2(min_occ, rls->occlusion);
   }
   rl->min_occ = min_occ;
@@ -340,7 +341,7 @@ static void lineart_calculate_single_line_occlusion(LineartRenderBuffer *rb,
   LineartBoundingArea *ba = lineart_get_first_possible_bounding_area(rb, rl);
   LineartBoundingArea *nba = ba;
   LineartRenderTriangleThread *rt;
-  LinkData *lip;
+
   double l, r;
   double k = (rl->r->fbcoord[1] - rl->l->fbcoord[1]) /
              (rl->r->fbcoord[0] - rl->l->fbcoord[0] + 1e-30);
@@ -353,7 +354,7 @@ static void lineart_calculate_single_line_occlusion(LineartRenderBuffer *rb,
 
   while (nba) {
 
-    for (lip = nba->linked_triangles.first; lip; lip = lip->next) {
+    LISTBASE_FOREACH (LinkData *, lip, &nba->linked_triangles) {
       rt = lip->data;
       if (rt->testing[thread_id] == rl || rl->l->intersecting_with == (void *)rt ||
           rl->r->intersecting_with == (void *)rt) {
@@ -672,7 +673,7 @@ static void lineart_cull_triangles(LineartRenderBuffer *rb)
   LineartRenderLine *rl;
   LineartRenderTriangle *rt, *rt1, *rt2;
   LineartRenderVert *rv;
-  LineartRenderElementLinkNode *reln, *veln, *teln;
+  LineartRenderElementLinkNode *veln, *teln;
   LineartRenderLineSegment *rls;
   double(*vp)[4] = rb->view_projection;
   int i;
@@ -696,7 +697,7 @@ static void lineart_cull_triangles(LineartRenderBuffer *rb)
   rv = &((LineartRenderVert *)veln->pointer)[v_count];
   rt1 = (void *)(((unsigned char *)teln->pointer) + rb->triangle_size * t_count);
 
-  for (reln = rb->triangle_buffer_pointers.first; reln; reln = reln->next) {
+  LISTBASE_FOREACH (LineartRenderElementLinkNode *, reln, &rb->triangle_buffer_pointers) {
     if (reln->additional) {
       continue;
     }
@@ -1291,14 +1292,13 @@ static void lineart_cull_triangles(LineartRenderBuffer *rb)
 static void lineart_perspective_division(LineartRenderBuffer *rb)
 {
   LineartRenderVert *rv;
-  LineartRenderElementLinkNode *reln;
   int i;
 
   if (!rb->cam_is_persp) {
     return;
   }
 
-  for (reln = rb->vertex_buffer_pointers.first; reln; reln = reln->next) {
+  LISTBASE_FOREACH (LineartRenderElementLinkNode *, reln, &rb->vertex_buffer_pointers) {
     rv = reln->pointer;
     for (i = 0; i < reln->element_count; i++) {
       mul_v3db_db(rv[i].fbcoord, 1 / rv[i].fbcoord[3]);
@@ -1473,7 +1473,6 @@ static void lineart_make_render_geometry_buffers_object(Object *ob,
 
 int ED_lineart_object_collection_usage_check(Collection *c, Object *ob)
 {
-  CollectionChild *cc;
 
   if (!c) {
     return OBJECT_FEATURE_LINE_INHERENT;
@@ -1515,7 +1514,7 @@ int ED_lineart_object_collection_usage_check(Collection *c, Object *ob)
     }
   }
 
-  for (cc = c->children.first; cc; cc = cc->next) {
+  LISTBASE_FOREACH (CollectionChild *, cc, &c->children) {
     int result = ED_lineart_object_collection_usage_check(cc->collection, ob);
     if (result > OBJECT_FEATURE_LINE_INHERENT) {
       return result;
@@ -1927,11 +1926,11 @@ static LineartRenderVert *lineart_triangle_line_intersection_test(LineartRenderB
   double Lv[3];
   double Rv[3];
   double dot_l, dot_r;
-  LineartRenderVert *result, *rv;
+  LineartRenderVert *result;
   double gloc[3];
   LineartRenderVert *l = rl->l, *r = rl->r;
 
-  for (rv = testing->intersecting_verts.first; rv; rv = rv->next) {
+  LISTBASE_FOREACH (LineartRenderVert *, rv, &testing->intersecting_verts) {
     if (rv->intersecting_with == rt && rv->intersecting_line == rl) {
       return rv;
     }
@@ -2196,7 +2195,6 @@ static void lineart_compute_scene_contours(LineartRenderBuffer *rb, const float
   double dot_1 = 0, dot_2 = 0;
   double result;
   int add = 0;
-  LineartRenderLine *rl;
   int contour_count = 0;
   int crease_count = 0;
   int material_count = 0;
@@ -2205,7 +2203,7 @@ static void lineart_compute_scene_contours(LineartRenderBuffer *rb, const float
     lineart_compute_view_vector(rb);
   }
 
-  for (rl = rb->all_render_lines.first; rl; rl = rl->next) {
+  LISTBASE_FOREACH (LineartRenderLine *, rl, &rb->all_render_lines) {
 
     add = 0;
     dot_1 = 0;
@@ -2478,14 +2476,12 @@ static int lineart_get_render_triangle_size(LineartRenderBuffer *rb, const Scene
 int ED_lineart_count_leveled_edge_segment_count(const ListBase *line_list,
                                                 const LineartLineLayer *ll)
 {
-  LinkData *lip;
   LineartRenderLine *rl;
-  LineartRenderLineSegment *rls;
   int count = 0;
-  for (lip = line_list->first; lip; lip = lip->next) {
+  LISTBASE_FOREACH (LinkData *, lip, line_list) {
     rl = lip->data;
 
-    for (rls = rl->segments.first; rls; rls = rls->next) {
+    LISTBASE_FOREACH (LineartRenderLineSegment *, rls, &rl->segments) {
 
       if (!(ll->flags & LRT_LINE_LAYER_USE_MULTIPLE_LEVELS)) {
         if (rls->occlusion == ll->level_start) {
@@ -2503,85 +2499,12 @@ int ED_lineart_count_leveled_edge_segment_count(const ListBase *line_list,
 }
 int lineart_count_intersection_segment_count(LineartRenderBuffer *rb)
 {
-  LineartRenderLine *rl;
   int count = 0;
-  for (rl = rb->intersection_lines.first; rl; rl = rl->next) {
+  LISTBASE_FOREACH (LineartRenderLine *, rl, &rb->intersection_lines) {
     count++;
   }
   return count;
 }
-void *ED_lineart_make_leveled_edge_vertex_array(LineartRenderBuffer *UNUSED(rb),
-                                                const ListBase *line_list,
-                                                float *vertexArray,
-                                                float *normal_array,
-                                                float **next_normal,
-                                                const LineartLineLayer *ll,
-                                                const float componet_id)
-{
-  LinkData *lip;
-  LineartRenderLine *rl;
-  LineartRenderLineSegment *rls, *irls;
-  float *v = vertexArray;
-  float *N = normal_array;
-  for (lip = line_list->first; lip; lip = lip->next) {
-    rl = lip->data;
-
-    for (rls = rl->segments.first; rls; rls = rls->next) {
-      int use = 0;
-      if (!(ll->flags & LRT_LINE_LAYER_USE_MULTIPLE_LEVELS)) {
-        if (rls->occlusion == ll->level_start) {
-          use = 1;
-        }
-      }
-      else {
-        if (rls->occlusion >= ll->level_start && rls->occlusion <= ll->level_end) {
-          use = 1;
-        }
-      }
-
-      if (!use)
-        continue;
-
-      if (rl->tl) {
-        N[0] += rl->tl->gn[0];
-        N[1] += rl->tl->gn[1];
-        N[2] += rl->tl->gn[2];
-      }
-      if (rl->tr) {
-        N[0] += rl->tr->gn[0];
-        N[1] += rl->tr->gn[1];
-        N[2] += rl->tr->gn[2];
-      }
-      if (rl->tl || rl->tr) {
-        normalize_v3(N);
-        copy_v3_v3(&N[3], N);
-      }
-      N += 6;
-
-      CLAMP(rls->at, 0, 1);
-      if ((irls = rls->next) != NULL) {
-        CLAMP(irls->at, 0, 1);
-      }
-
-      *v = interpf(rl->r->fbcoord[0], rl->l->fbcoord[0], rls->at);
-      v++;
-      *v = interpf(rl->r->fbcoord[1], rl->l->fbcoord[1], rls->at);
-      v++;
-      *v = componet_id;
-      v++;
-      *v = interpf(rl->r->fbcoord[0], rl->l->fbcoord[0], irls ? irls->at : 1);
-      v++;
-      *v = interpf(rl->r->fbcoord[1], rl->l->fbcoord[1], irls ? irls->at : 1);
-      v++;
-      *v = componet_id;
-      v++;
-    }
-  }
-  *next_normal = N;
-  return v;
-}
-
-void lineart_chain_generate_draw_command(LineartRenderBuffer *rb);
 
 #define TNS_BOUND_AREA_CROSSES(b1, b2) \
   ((b1)[0] < (b2)[1] && (b1)[1] > (b2)[0] && (b1)[3] < (b2)[2] && (b1)[2] > (b2)[3])
@@ -2653,7 +2576,7 @@ static void lineart_connect_new_bounding_areas(LineartRenderBuffer *rb, LineartB
 
   /** Connect 4 child bounding areas to other areas that are
    * adjacent to their original parents */
-  for (lip = root->lp.first; lip; lip = lip->next) {
+  LISTBASE_FOREACH (LinkData *, lip, &root->lp) {
 
     /** For example, we are dealing with parent'scene left side
      * tba represents each adjacent neighbor of the parent.
@@ -2672,7 +2595,7 @@ static void lineart_connect_new_bounding_areas(LineartRenderBuffer *rb, LineartB
       list_append_pointer_static_pool(mph, &tba->rp, &ba[2]);
     }
   }
-  for (lip = root->rp.first; lip; lip = lip->next) {
+  LISTBASE_FOREACH (LinkData *, lip, &root->rp) {
     tba = lip->data;
     if (ba[0].u > tba->b && ba[0].b < tba->u) {
       list_append_pointer_static_pool(mph, &ba[0].rp, tba);
@@ -2683,7 +2606,7 @@ static void lineart_connect_new_bounding_areas(LineartRenderBuffer *rb, LineartB
       list_append_pointer_static_pool(mph, &tba->lp, &ba[3]);
     }
   }
-  for (lip = root->up.first; lip; lip = lip->next) {
+  LISTBASE_FOREACH (LinkData *, lip, &root->up) {
     tba = lip->data;
     if (ba[0].r > tba->l && ba[0].l < tba->r) {
       list_append_pointer_static_pool(mph, &ba[0].up, tba);
@@ -2694,7 +2617,7 @@ static void lineart_connect_new_bounding_areas(LineartRenderBuffer *rb, LineartB
       list_append_pointer_static_pool(mph, &tba->bp, &ba[1]);
     }
   }
-  for (lip = root->bp.first; lip; lip = lip->next) {
+  LISTBASE_FOREACH (LinkData *, lip, &root->bp) {
     tba = lip->data;
     if (ba[2].r > tba->l && ba[2].l < tba->r) {
       list_append_pointer_static_pool(mph, &ba[2].bp, tba);
@@ -2708,7 +2631,7 @@ static void lineart_connect_new_bounding_areas(LineartRenderBuffer *rb, LineartB
 
   /** Then remove the parent bounding areas from
    * their original adjacent areas. */
-  for (lip = root->lp.first; lip; lip = lip->next) {
+  LISTBASE_FOREACH (LinkData *, lip, &root

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list