From 286e76eed7b3127ad42c2fd324c42a59fabecfa0 Mon Sep 17 00:00:00 2001 From: Pratik Borhade Date: Tue, 19 Sep 2023 17:38:06 +0530 Subject: [PATCH 1/5] GPv3: Add statistics information Like legacy Grease pencil, display strokes, points, frames information for new grease pencil object --- .../blender/editors/space_info/info_stats.cc | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/space_info/info_stats.cc b/source/blender/editors/space_info/info_stats.cc index 1f5d75803f0..f08e792ba5a 100644 --- a/source/blender/editors/space_info/info_stats.cc +++ b/source/blender/editors/space_info/info_stats.cc @@ -15,6 +15,7 @@ #include "DNA_collection_types.h" #include "DNA_curve_types.h" #include "DNA_gpencil_legacy_types.h" +#include "DNA_grease_pencil_types.h" #include "DNA_lattice_types.h" #include "DNA_mesh_types.h" #include "DNA_meta_types.h" @@ -30,6 +31,7 @@ #include "BLI_string_utf8.h" #include "BLI_timecode.h" #include "BLI_utildefines.h" +#include "BLI_span.hh" #include "BLT_translation.h" @@ -190,10 +192,28 @@ static void stats_object(Object *ob, } break; } + case OB_GREASE_PENCIL: { + if (!is_selected) { + break; + } + using namespace blender; + GreasePencil *grease_pencil = static_cast(ob->data); + + Span drawings = grease_pencil->drawings(); + for (int range : drawings.index_range()) { + GreasePencilDrawingBase *drawing_base = drawings[range]; + GreasePencilDrawing *drawing = reinterpret_cast(drawing_base); + CurvesGeometry &curves = drawing->geometry; + stats->totgppoint += curves.point_num; + stats->totgpstroke += curves.curve_num; + } + stats->totgplayer += grease_pencil->layers().size(); + stats->totgpframe += grease_pencil->drawing_array_num; + break; + } case OB_CURVES: case OB_POINTCLOUD: - case OB_VOLUME: - case OB_GREASE_PENCIL: { + case OB_VOLUME: { break; } } @@ -835,7 +855,7 @@ void ED_info_draw_stats( else if (ob && (object_mode & OB_MODE_POSE)) { stats_row(col1, labels[BONES], col2, stats_fmt.totbonesel, stats_fmt.totbone, y, height); } - else if ((ob) && (ob->type == OB_GPENCIL_LEGACY)) { + else if ((ob) && ELEM(ob->type, OB_GPENCIL_LEGACY, OB_GREASE_PENCIL)) { stats_row(col1, labels[LAYERS], col2, stats_fmt.totgplayer, nullptr, y, height); stats_row(col1, labels[FRAMES], col2, stats_fmt.totgpframe, nullptr, y, height); stats_row(col1, labels[STROKES], col2, stats_fmt.totgpstroke, nullptr, y, height); -- 2.30.2 From 7db5f51f3d3e975020b55db9c92f6ef786436848 Mon Sep 17 00:00:00 2001 From: Pratik Borhade Date: Tue, 19 Sep 2023 17:44:52 +0530 Subject: [PATCH 2/5] Cleanup --- source/blender/editors/space_info/info_stats.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/space_info/info_stats.cc b/source/blender/editors/space_info/info_stats.cc index f08e792ba5a..9489f534951 100644 --- a/source/blender/editors/space_info/info_stats.cc +++ b/source/blender/editors/space_info/info_stats.cc @@ -198,15 +198,16 @@ static void stats_object(Object *ob, } using namespace blender; GreasePencil *grease_pencil = static_cast(ob->data); - Span drawings = grease_pencil->drawings(); + for (int range : drawings.index_range()) { GreasePencilDrawingBase *drawing_base = drawings[range]; GreasePencilDrawing *drawing = reinterpret_cast(drawing_base); - CurvesGeometry &curves = drawing->geometry; + CurvesGeometry curves = drawing->geometry; stats->totgppoint += curves.point_num; stats->totgpstroke += curves.curve_num; } + stats->totgplayer += grease_pencil->layers().size(); stats->totgpframe += grease_pencil->drawing_array_num; break; -- 2.30.2 From b80e7d216e3d3fdcb2de5ab965cc48e1dd84927e Mon Sep 17 00:00:00 2001 From: Pratik Borhade Date: Wed, 20 Sep 2023 16:01:46 +0530 Subject: [PATCH 3/5] Suggested changes - use const - access geometry through `strokes()` - calculate keyframe count from `layer->frames().size()` --- .../blender/editors/space_info/info_stats.cc | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/space_info/info_stats.cc b/source/blender/editors/space_info/info_stats.cc index 9489f534951..95c4a0e3f58 100644 --- a/source/blender/editors/space_info/info_stats.cc +++ b/source/blender/editors/space_info/info_stats.cc @@ -40,9 +40,11 @@ #include "BKE_blender_version.h" #include "BKE_context.h" #include "BKE_curve.h" +#include "BKE_curves.hh" #include "BKE_displist.h" #include "BKE_editmesh.h" #include "BKE_gpencil_legacy.h" +#include "BKE_grease_pencil.hh" #include "BKE_key.h" #include "BKE_layer.h" #include "BKE_main.h" @@ -197,19 +199,23 @@ static void stats_object(Object *ob, break; } using namespace blender; - GreasePencil *grease_pencil = static_cast(ob->data); - Span drawings = grease_pencil->drawings(); + const GreasePencil *grease_pencil = static_cast(ob->data); + const Span drawings = grease_pencil->drawings(); for (int range : drawings.index_range()) { GreasePencilDrawingBase *drawing_base = drawings[range]; GreasePencilDrawing *drawing = reinterpret_cast(drawing_base); - CurvesGeometry curves = drawing->geometry; - stats->totgppoint += curves.point_num; - stats->totgpstroke += curves.curve_num; + const bke::CurvesGeometry &curves = drawing->wrap().strokes(); + + stats->totgppoint += curves.points_num(); + stats->totgpstroke += curves.curves_num(); + } + + for (auto layer : grease_pencil->layers()) { + stats->totgpframe += layer->frames().size(); } stats->totgplayer += grease_pencil->layers().size(); - stats->totgpframe += grease_pencil->drawing_array_num; break; } case OB_CURVES: -- 2.30.2 From f713ad91281358448ff287546892850a6c487c07 Mon Sep 17 00:00:00 2001 From: Pratik Borhade Date: Thu, 21 Sep 2023 15:48:00 +0530 Subject: [PATCH 4/5] Cleanup and replace auto --- source/blender/editors/space_info/info_stats.cc | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/source/blender/editors/space_info/info_stats.cc b/source/blender/editors/space_info/info_stats.cc index 95c4a0e3f58..8f1ef3d42d2 100644 --- a/source/blender/editors/space_info/info_stats.cc +++ b/source/blender/editors/space_info/info_stats.cc @@ -200,18 +200,16 @@ static void stats_object(Object *ob, } using namespace blender; const GreasePencil *grease_pencil = static_cast(ob->data); - const Span drawings = grease_pencil->drawings(); - for (int range : drawings.index_range()) { - GreasePencilDrawingBase *drawing_base = drawings[range]; - GreasePencilDrawing *drawing = reinterpret_cast(drawing_base); + for (const GreasePencilDrawingBase *drawing_base : grease_pencil->drawings()) { + const GreasePencilDrawing *drawing = reinterpret_cast(drawing_base); const bke::CurvesGeometry &curves = drawing->wrap().strokes(); stats->totgppoint += curves.points_num(); stats->totgpstroke += curves.curves_num(); } - for (auto layer : grease_pencil->layers()) { + for (const blender::bke::greasepencil::Layer *layer : grease_pencil->layers()) { stats->totgpframe += layer->frames().size(); } -- 2.30.2 From 74968e0abb08e546fb1be07c0b94accf025daa79 Mon Sep 17 00:00:00 2001 From: Pratik Borhade Date: Thu, 21 Sep 2023 15:53:43 +0530 Subject: [PATCH 5/5] Cleanup --- source/blender/editors/space_info/info_stats.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/space_info/info_stats.cc b/source/blender/editors/space_info/info_stats.cc index 8f1ef3d42d2..ee9b570466a 100644 --- a/source/blender/editors/space_info/info_stats.cc +++ b/source/blender/editors/space_info/info_stats.cc @@ -198,12 +198,12 @@ static void stats_object(Object *ob, if (!is_selected) { break; } - using namespace blender; + const GreasePencil *grease_pencil = static_cast(ob->data); for (const GreasePencilDrawingBase *drawing_base : grease_pencil->drawings()) { const GreasePencilDrawing *drawing = reinterpret_cast(drawing_base); - const bke::CurvesGeometry &curves = drawing->wrap().strokes(); + const blender::bke::CurvesGeometry &curves = drawing->wrap().strokes(); stats->totgppoint += curves.points_num(); stats->totgpstroke += curves.curves_num(); -- 2.30.2