[Bf-blender-cvs] [85fde25178b] master: LineArt: General code cleanups.

Yiming Wu noreply at git.blender.org
Mon Jun 13 16:14:40 CEST 2022


Commit: 85fde25178b552db4f98ae5317a825b230e13a2f
Author: Yiming Wu
Date:   Mon Jun 13 21:08:36 2022 +0800
Branches: master
https://developer.blender.org/rB85fde25178b552db4f98ae5317a825b230e13a2f

LineArt: General code cleanups.

- Use uintxx_t for all 8/16/64 bit integer types.
- Removed prepend_edge_direct thingy which is no longer needed in current edge iterator model.
- Minor code path adjustments like only copies view vector when necessary etc.
- Correctly handle ies==NULL in edge cutting function.
- White spaces and comments etc.

Reviewed By: Sebastian Parborg (zeddb)

Differential Revision: https://developer.blender.org/D15181

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

M	source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
M	source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
M	source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c
M	source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
M	source/blender/gpencil_modifiers/intern/lineart/lineart_intern.h
M	source/blender/gpencil_modifiers/intern/lineart/lineart_util.c
M	source/blender/makesdna/DNA_lineart_types.h

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

diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c b/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
index 67e2c31d96b..f179713e8cb 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
@@ -352,7 +352,7 @@ static void edge_types_panel_draw(const bContext *UNUSED(C), Panel *panel)
   uiLayout *sub = uiLayoutRowWithHeading(col, false, IFACE_("Crease"));
   uiItemR(sub, ptr, "use_crease", 0, "", ICON_NONE);
   uiLayout *entry = uiLayoutRow(sub, false);
-  uiLayoutSetEnabled(entry, RNA_boolean_get(ptr, "use_crease") || is_first);
+  uiLayoutSetActive(entry, RNA_boolean_get(ptr, "use_crease") || is_first);
   if (use_cache && !is_first) {
     uiItemL(entry, IFACE_("Angle Cached"), ICON_INFO);
   }
@@ -524,6 +524,7 @@ static void intersection_panel_draw(const bContext *UNUSED(C), Panel *panel)
 
   uiItemR(layout, ptr, "use_intersection_match", 0, IFACE_("Exact Match"), ICON_NONE);
 }
+
 static void face_mark_panel_draw_header(const bContext *UNUSED(C), Panel *panel)
 {
   uiLayout *layout = panel->layout;
diff --git a/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h b/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
index 51f8bae9295..6ca6fe2ff96 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
+++ b/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
@@ -36,10 +36,10 @@ typedef struct LineartTriangle {
   /* first culled in line list to use adjacent triangle info, then go through triangle list. */
   double gn[3];
 
-  unsigned char material_mask_bits;
-  unsigned char intersection_mask;
-  unsigned char mat_occlusion;
-  unsigned char flags; /* #eLineartTriangleFlags */
+  uint8_t material_mask_bits;
+  uint8_t intersection_mask;
+  uint8_t mat_occlusion;
+  uint8_t flags; /* #eLineartTriangleFlags */
 
   /**
    * Only use single link list, because we don't need to go back in order.
@@ -84,10 +84,10 @@ typedef struct LineartEdgeSegment {
   /** at==0: left  at==1: right  (this is in 2D projected space) */
   double at;
   /** Occlusion level after "at" point */
-  unsigned char occlusion;
+  uint8_t occlusion;
 
   /* Used to filter line art occlusion edges */
-  unsigned char material_mask_bits;
+  uint8_t material_mask_bits;
 } LineartEdgeSegment;
 
 typedef struct LineartVert {
@@ -119,17 +119,14 @@ typedef enum eLineArtVertFlags {
 } eLineArtVertFlags;
 
 typedef struct LineartEdge {
-  /** We only need link node kind of list here. */
-  struct LineartEdge *next;
   struct LineartVert *v1, *v2;
-
   struct LineartTriangle *t1, *t2;
   ListBase segments;
-  char min_occ;
+  int8_t min_occ;
 
   /** Also for line type determination on chaining. */
   uint16_t flags;
-  unsigned char intersection_mask;
+  uint8_t intersection_mask;
 
   /**
    * Still need this entry because culled lines will not add to object
@@ -149,15 +146,15 @@ typedef struct LineartEdgeChain {
   float length;
 
   /** Used when re-connecting and grease-pencil stroke generation. */
-  char picked;
-  char level;
+  int8_t picked;
+  int8_t level;
 
   /** Chain now only contains one type of segments */
   int type;
   /** Will only connect chains that has the same loop id. */
   int loop_id;
-  unsigned char material_mask_bits;
-  unsigned char intersection_mask;
+  uint8_t material_mask_bits;
+  uint8_t intersection_mask;
 
   struct Object *object_ref;
 } LineartEdgeChain;
@@ -170,9 +167,9 @@ typedef struct LineartEdgeChainItem {
   float gpos[3];
   float normal[3];
   uint16_t line_type;
-  char occlusion;
-  unsigned char material_mask_bits;
-  unsigned char intersection_mask;
+  int8_t occlusion;
+  uint8_t material_mask_bits;
+  uint8_t intersection_mask;
   size_t index;
 } LineartEdgeChainItem;
 
@@ -180,17 +177,17 @@ typedef struct LineartChainRegisterEntry {
   struct LineartChainRegisterEntry *next, *prev;
   LineartEdgeChain *ec;
   LineartEdgeChainItem *eci;
-  char picked;
+  int8_t picked;
 
   /* left/right mark.
    * Because we revert list in chaining so we need the flag. */
-  char is_left;
+  int8_t is_left;
 } LineartChainRegisterEntry;
 
 typedef struct LineartAdjacentEdge {
-  unsigned int v1;
-  unsigned int v2;
-  unsigned int e;
+  uint32_t v1;
+  uint32_t v2;
+  uint32_t e;
 } LineartAdjacentEdge;
 
 enum eLineArtTileRecursiveLimit {
@@ -233,7 +230,7 @@ typedef struct LineartData {
 
     struct LineartBoundingArea *initials;
 
-    unsigned int tile_count;
+    uint32_t tile_count;
 
   } qtree;
 
@@ -333,7 +330,7 @@ typedef struct LineartCache {
   ListBase chains;
 
   /** Cache only contains edge types specified in this variable. */
-  char rb_edge_types;
+  int8_t rb_edge_types;
 } LineartCache;
 
 #define DBL_TRIANGLE_LIM 1e-8
@@ -396,7 +393,7 @@ typedef struct LineartObjectLoadTaskInfo {
   /* LinkNode styled list */
   LineartObjectInfo *pending;
   /* Used to spread the load across several threads. This can not overflow. */
-  long unsigned int total_faces;
+  uint64_t total_faces;
 } LineartObjectLoadTaskInfo;
 
 /**
@@ -689,16 +686,16 @@ void MOD_lineart_gpencil_generate(LineartCache *cache,
                                   struct Object *ob,
                                   struct bGPDlayer *gpl,
                                   struct bGPDframe *gpf,
-                                  char source_type,
+                                  int8_t source_type,
                                   void *source_reference,
                                   int level_start,
                                   int level_end,
                                   int mat_nr,
-                                  short edge_types,
-                                  unsigned char mask_switches,
-                                  unsigned char material_mask_bits,
-                                  unsigned char intersection_mask,
-                                  short thickness,
+                                  int16_t edge_types,
+                                  uint8_t mask_switches,
+                                  uint8_t material_mask_bits,
+                                  uint8_t intersection_mask,
+                                  int16_t thickness,
                                   float opacity,
                                   const char *source_vgname,
                                   const char *vgname,
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c
index 96c881ee32c..1d84bb8e232 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c
@@ -23,7 +23,7 @@ static LineartEdge *lineart_line_get_connected(LineartBoundingArea *ba,
                                                LineartVert *vt,
                                                LineartVert **new_vt,
                                                int match_flag,
-                                               unsigned char match_isec_mask)
+                                               uint8_t match_isec_mask)
 {
   for (int i = 0; i < ba->line_count; i++) {
     LineartEdge *n_e = ba->linked_lines[i];
@@ -90,9 +90,9 @@ static LineartEdgeChainItem *lineart_chain_append_point(LineartData *ld,
                                                         float *fbcoord,
                                                         float *gpos,
                                                         float *normal,
-                                                        char type,
+                                                        uint8_t type,
                                                         int level,
-                                                        unsigned char material_mask_bits,
+                                                        uint8_t material_mask_bits,
                                                         size_t index)
 {
   LineartEdgeChainItem *eci;
@@ -127,9 +127,9 @@ static LineartEdgeChainItem *lineart_chain_prepend_point(LineartData *ld,
                                                          float *fbcoord,
                                                          float *gpos,
                                                          float *normal,
-                                                         char type,
+                                                         uint8_t type,
                                                          int level,
-                                                         unsigned char material_mask_bits,
+                                                         uint8_t material_mask_bits,
                                                          size_t index)
 {
   LineartEdgeChainItem *eci;
@@ -159,7 +159,7 @@ void MOD_lineart_chain_feature_lines(LineartData *ld)
   LineartBoundingArea *ba;
   LineartEdgeSegment *es;
   int last_occlusion;
-  unsigned char last_transparency;
+  uint8_t last_transparency;
   /* Used when converting from double. */
   float use_fbcoord[4];
   float use_gpos[3];
@@ -564,7 +564,7 @@ static bool lineart_chain_fix_ambiguous_segments(LineartEdgeChain *ec,
   float dist_accum = 0;
 
   int fixed_occ = last_matching_eci->occlusion;
-  unsigned char fixed_mask = last_matching_eci->material_mask_bits;
+  uint8_t fixed_mask = last_matching_eci->material_mask_bits;
 
   LineartEdgeChainItem *can_skip_to = NULL;
   LineartEdgeChainItem *last_eci = last_matching_eci;
@@ -627,7 +627,7 @@ void MOD_lineart_chain_split_for_fixed_occlusion(LineartData *ld)
 
     LineartEdgeChainItem *first_eci = (LineartEdgeChainItem *)ec->chain.first;
     int fixed_occ = first_eci->occlusion;
-    unsigned char fixed_mask = first_eci->material_mask_bits;
+    uint8_t fixed_mask = first_eci->material_mask_bits;
     ec->level = fixed_occ;
     ec->material_mask_bits = fixed_mask;
     for (eci = first_eci->next; eci; eci = next_eci) {
@@ -747,8 +747,8 @@ static LineartChainRegisterEntry *lineart_chain_get_closest_cre(LineartData *ld,
                                                                 LineartEdgeChain *ec,

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list