[Bf-blender-cvs] [c9e3ae3f070] gpencil-new-data-proposal: Cleanup, comments

Falk David noreply at git.blender.org
Fri May 13 16:07:36 CEST 2022


Commit: c9e3ae3f070d1df5c0efb2281fb99bcdfd1a0587
Author: Falk David
Date:   Fri May 13 16:07:31 2022 +0200
Branches: gpencil-new-data-proposal
https://developer.blender.org/rBc9e3ae3f070d1df5c0efb2281fb99bcdfd1a0587

Cleanup, comments

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

M	source/blender/blenkernel/intern/gpencil_new_proposal.hh
M	source/blender/blenkernel/intern/gpencil_new_proposal_test.cc

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

diff --git a/source/blender/blenkernel/intern/gpencil_new_proposal.hh b/source/blender/blenkernel/intern/gpencil_new_proposal.hh
index 630f324c6cb..3f328ee36e6 100644
--- a/source/blender/blenkernel/intern/gpencil_new_proposal.hh
+++ b/source/blender/blenkernel/intern/gpencil_new_proposal.hh
@@ -120,13 +120,17 @@ typedef struct GPData {
   GPDataRuntimeHandle *runtime;
 } GPData;
 
-/* This is the ID_GP structure that holds all the information at the object data level. */
+/**
+ * This would be the new Grease Pencil ID structure. This is where the animation data, materials, etc. are stored.
+ * Layers, Frames, Groups and RuntimeData would be stored in GPData.
+ */
 typedef struct GreasePencil {
   ID id;
   /* Animation data (must be immediately after id). */
   struct AnimData *adt;
 
-  /* Pointer to the actual data-block containing the frames, layers and layer groups. */
+  /* Pointer to the actual data-block containing the frames, layers and layer groups. Note: This is
+   * stored as a pointer to easily wrap it in a class. */
   GPData *grease_pencil_data;
 
   /* GreasePencil flag. */
diff --git a/source/blender/blenkernel/intern/gpencil_new_proposal_test.cc b/source/blender/blenkernel/intern/gpencil_new_proposal_test.cc
index d7ce5c803c6..4ca0ca7a4fb 100644
--- a/source/blender/blenkernel/intern/gpencil_new_proposal_test.cc
+++ b/source/blender/blenkernel/intern/gpencil_new_proposal_test.cc
@@ -21,7 +21,7 @@
 
 namespace blender::bke {
 
-class GPLayerGroup : ::GPLayerGroup {
+class GPLayerGroup : ::GPLayerGroup { /* Unused for now. Placeholder class. */
  public:
   GPLayerGroup()
   {
@@ -64,7 +64,7 @@ class GPDataRuntime {
   mutable Map<int, Vector<int64_t>> frame_index_masks_cache;
   mutable std::mutex frame_index_masks_cache_mutex;
 
-  IndexMask get_cached_frame_index_mask(int layer_index)
+  IndexMask frame_index_masks_cache_for_layer(int layer_index)
   {
     return frame_index_masks_cache.lookup(layer_index).as_span();
   }
@@ -290,6 +290,7 @@ class GPData : public ::GPData {
     if (this->layers_size > 0) {
       this->layers_array = reinterpret_cast<::GPLayer *>(
           MEM_malloc_arrayN(this->layers_size, sizeof(::GPLayer), __func__));
+      default_construct_n(reinterpret_cast<GPLayer *>(this->layers_array), this->layers_size);
       this->active_layer_index = 0;
     }
     else {
@@ -348,7 +349,7 @@ class GPData : public ::GPData {
 
   Span<GPFrame> frames() const
   {
-    return {(const GPFrame *)this->frames_array, this->frames_size};
+    return {reinterpret_cast<const GPFrame *>(this->frames_array), this->frames_size};
   }
 
   const GPFrame &frames(int index) const
@@ -358,7 +359,7 @@ class GPData : public ::GPData {
 
   MutableSpan<GPFrame> frames_for_write()
   {
-    return {(GPFrame *)this->frames_array, this->frames_size};
+    return {reinterpret_cast<GPFrame *>(this->frames_array), this->frames_size};
   }
 
   GPFrame &frames_for_write(int index)
@@ -374,13 +375,13 @@ class GPData : public ::GPData {
 
     /* If the indices are cached for this layer, use the cache. */
     if (this->runtime->frame_index_masks_cache.contains(layer_index)) {
-      return this->runtime->get_cached_frame_index_mask(layer_index);
+      return this->runtime->frame_index_masks_cache_for_layer(layer_index);
     }
 
     /* A double checked lock. */
     std::scoped_lock{this->runtime->frame_index_masks_cache_mutex};
     if (this->runtime->frame_index_masks_cache.contains(layer_index)) {
-      return this->runtime->get_cached_frame_index_mask(layer_index);
+      return this->runtime->frame_index_masks_cache_for_layer(layer_index);
     }
 
     Vector<int64_t> indices;
@@ -410,7 +411,7 @@ class GPData : public ::GPData {
 
   Span<GPLayer> layers() const
   {
-    return {(const GPLayer *)this->layers_array, this->layers_size};
+    return {reinterpret_cast<const GPLayer *>(this->layers_array), this->layers_size};
   }
 
   const GPLayer &layers(int index) const
@@ -420,7 +421,7 @@ class GPData : public ::GPData {
 
   MutableSpan<GPLayer> layers_for_write()
   {
-    return {(GPLayer *)this->layers_array, this->layers_size};
+    return {reinterpret_cast<GPLayer *>(this->layers_array), this->layers_size};
   }
 
   GPLayer &layers_for_write(int index)
@@ -463,6 +464,7 @@ class GPData : public ::GPData {
     /* Sort frame array. */
     update_frames_array();
 
+    /* Find the frame again and return its index (now from the sorted array). */
     auto it = std::lower_bound(this->frames().begin(),
                                this->frames().end(),
                                std::pair<int, int>(layer_index, new_frame.start_time));
@@ -542,7 +544,7 @@ class GPData : public ::GPData {
                          reinterpret_cast<GPLayer *>(dst.layers_array));
     dst.active_layer_index = src.active_layer_index;
 
-    /* Copy layer groups. */
+    /* Copy layer default group. */
     *dst.default_group = *src.default_group;
   }
 
@@ -630,7 +632,7 @@ class GPData : public ::GPData {
     /* Make sure frames are ordered chronologically and by layer order. */
     std::sort(this->frames_for_write().begin(), this->frames_for_write().end());
 
-    /* Clear the cached indices since they are probably no longer valid. */
+    /* Clear the cached indices since they are (probably) no longer valid. */
     this->runtime->frame_index_masks_cache.clear();
   }
 };



More information about the Bf-blender-cvs mailing list