[Bf-blender-cvs] [3b5d9ce4411] greasepencil-object: Move Info panel to Bottom Bar Statistics
Antonio Vazquez
noreply at git.blender.org
Thu Jun 7 19:15:21 CEST 2018
Commit: 3b5d9ce441128e6f0d4a29ae74e390f755526e24
Author: Antonio Vazquez
Date: Thu Jun 7 19:15:12 2018 +0200
Branches: greasepencil-object
https://developer.blender.org/rB3b5d9ce441128e6f0d4a29ae74e390f755526e24
Move Info panel to Bottom Bar Statistics
Now the info appears in the same place that other object types.
===================================================================
M release/scripts/startup/bl_ui/properties_data_gpencil.py
M source/blender/blenkernel/BKE_gpencil.h
M source/blender/blenkernel/intern/gpencil.c
M source/blender/editors/space_info/info_stats.c
M source/blender/makesrna/intern/rna_gpencil.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_data_gpencil.py b/release/scripts/startup/bl_ui/properties_data_gpencil.py
index f073cc64f97..407e0426a6a 100644
--- a/release/scripts/startup/bl_ui/properties_data_gpencil.py
+++ b/release/scripts/startup/bl_ui/properties_data_gpencil.py
@@ -202,32 +202,6 @@ class DATA_PT_gpencil_vertexpanel(DataButtonsPanel, Panel):
layout.prop(context.tool_settings, "vertex_group_weight", text="Weight")
-class DATA_PT_gpencil_infopanel(DataButtonsPanel, Panel):
- bl_space_type = 'PROPERTIES'
- bl_region_type = 'WINDOW'
- bl_context = "data"
- bl_label = "Information"
- bl_options = {'DEFAULT_CLOSED'}
-
- def draw(self, context):
- layout = self.layout
- gpd = context.gpencil_data
-
- split = layout.split(percentage=0.5)
-
- col = split.column(align=True)
- col.label("Layers:", icon="LAYER_ACTIVE")
- col.label("Frames:", icon="LAYER_ACTIVE")
- col.label("Strokes:", icon="LAYER_ACTIVE")
- col.label("Points:", icon="LAYER_ACTIVE")
-
- col = split.column(align=True)
- col.label(str(gpd.info_total_layers))
- col.label(str(gpd.info_total_frames))
- col.label(str(gpd.info_total_strokes))
- col.label(str(gpd.info_total_points))
-
-
class DATA_PT_gpencil_display(DataButtonsPanel, Panel):
bl_label = "Viewport Display"
bl_options = {'DEFAULT_CLOSED'}
@@ -253,7 +227,6 @@ class DATA_PT_gpencil_display(DataButtonsPanel, Panel):
sub.active = not gpd.show_constant_thickness
sub.prop(gpd, "pixfactor", text="Thickness Scale")
-
if gpl:
layout.prop(gpd, "show_stroke_direction", text="Show Stroke Directions")
@@ -268,7 +241,6 @@ classes = (
DATA_PT_gpencil_parentpanel,
DATA_PT_gpencil_vertexpanel,
DATA_PT_gpencil_display,
- DATA_PT_gpencil_infopanel,
GPENCIL_UL_vgroups,
)
diff --git a/source/blender/blenkernel/BKE_gpencil.h b/source/blender/blenkernel/BKE_gpencil.h
index 2569a5ecaa4..3311b117135 100644
--- a/source/blender/blenkernel/BKE_gpencil.h
+++ b/source/blender/blenkernel/BKE_gpencil.h
@@ -94,6 +94,12 @@ void BKE_gpencil_frame_delete_laststroke(struct bGPDlayer *gpl, struct bGPDframe
void BKE_gpencil_material_index_remove(struct bGPdata *gpd, int index);
void BKE_gpencil_material_remap(struct bGPdata *gpd, const unsigned int *remap, unsigned int remap_len);
+/* statistics functions */
+int BKE_gpencil_stats_total_layers(struct bGPdata *gpd);
+int BKE_gpencil_stats_total_frames(struct bGPdata *gpd);
+int BKE_gpencil_stats_total_strokes(struct bGPdata *gpd);
+int BKE_gpencil_stats_total_points(struct bGPdata *gpd);
+
/* Utilities for creating and populating GP strokes */
/* - Number of values defining each point in the built-in data
* buffers for primitives (e.g. 2D Monkey)
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index a390e64531b..f196ad27613 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -1606,3 +1606,46 @@ void BKE_gpencil_material_remap(struct bGPdata *gpd, const unsigned int *remap,
#undef MAT_NR_REMAP
}
+
+/* statistics functions */
+int BKE_gpencil_stats_total_layers(bGPdata *gpd)
+{
+ return BLI_listbase_count(&gpd->layers);
+}
+
+int BKE_gpencil_stats_total_frames(bGPdata *gpd)
+{
+ int tot = 0;
+ for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) {
+ tot += BLI_listbase_count(&gpl->frames);
+ }
+
+ return tot;
+}
+
+int BKE_gpencil_stats_total_strokes(bGPdata *gpd)
+{
+ int tot = 0;
+ for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) {
+ for (bGPDframe *gpf = gpl->frames.first; gpf; gpf = gpf->next) {
+ tot += BLI_listbase_count(&gpf->strokes);
+ }
+ }
+
+ return tot;
+}
+
+int BKE_gpencil_stats_total_points(bGPdata *gpd)
+{
+ int tot = 0;
+ for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) {
+ for (bGPDframe *gpf = gpl->frames.first; gpf; gpf = gpf->next) {
+ for (bGPDstroke *gps = gpf->strokes.first; gps; gps = gps->next) {
+ tot += gps->totpoints;
+ }
+ }
+ }
+
+ return tot;
+}
+
diff --git a/source/blender/editors/space_info/info_stats.c b/source/blender/editors/space_info/info_stats.c
index 481c9031a73..d9f290a69e6 100644
--- a/source/blender/editors/space_info/info_stats.c
+++ b/source/blender/editors/space_info/info_stats.c
@@ -32,6 +32,7 @@
#include "DNA_armature_types.h"
#include "DNA_curve_types.h"
+#include "DNA_gpencil_types.h"
#include "DNA_group_types.h"
#include "DNA_lattice_types.h"
#include "DNA_meta_types.h"
@@ -49,6 +50,7 @@
#include "BKE_curve.h"
#include "BKE_displist.h"
#include "BKE_DerivedMesh.h"
+#include "BKE_gpencil.h"
#include "BKE_key.h"
#include "BKE_layer.h"
#include "BKE_paint.h"
@@ -72,6 +74,7 @@ typedef struct SceneStats {
int totobj, totobjsel;
int totlamp, totlampsel;
int tottri;
+ int totgplayer, totgpframe, totgpstroke, totgppoint;
char infostr[MAX_INFO_LEN];
} SceneStats;
@@ -85,6 +88,8 @@ typedef struct SceneStatsFmt {
char totobj[MAX_INFO_NUM_LEN], totobjsel[MAX_INFO_NUM_LEN];
char totlamp[MAX_INFO_NUM_LEN], totlampsel[MAX_INFO_NUM_LEN];
char tottri[MAX_INFO_NUM_LEN];
+ char totgplayer[MAX_INFO_NUM_LEN], totgpframe[MAX_INFO_NUM_LEN];
+ char totgpstroke[MAX_INFO_NUM_LEN], totgppoint[MAX_INFO_NUM_LEN];
} SceneStatsFmt;
static void stats_object(Object *ob, int sel, int totob, SceneStats *stats)
@@ -144,6 +149,15 @@ static void stats_object(Object *ob, int sel, int totob, SceneStats *stats)
}
break;
}
+ case OB_GPENCIL:
+ {
+ bGPdata *gpd = (bGPdata *)ob->data;
+ stats->totgplayer = BKE_gpencil_stats_total_layers(gpd);
+ stats->totgpframe = BKE_gpencil_stats_total_frames(gpd);
+ stats->totgpstroke = BKE_gpencil_stats_total_strokes(gpd);
+ stats->totgppoint = BKE_gpencil_stats_total_points(gpd);
+ break;
+ }
}
}
@@ -442,6 +456,11 @@ static void stats_string(ViewLayer *view_layer)
SCENE_STATS_FMT_INT(tottri);
+ SCENE_STATS_FMT_INT(totgplayer);
+ SCENE_STATS_FMT_INT(totgpframe);
+ SCENE_STATS_FMT_INT(totgpstroke);
+ SCENE_STATS_FMT_INT(totgppoint);
+
#undef SCENE_STATS_FMT_INT
@@ -499,6 +518,14 @@ static void stats_string(ViewLayer *view_layer)
ofs += BLI_snprintf(s + ofs, MAX_INFO_LEN - ofs, IFACE_("Bones:%s/%s %s%s"),
stats_fmt.totbonesel, stats_fmt.totbone, memstr, gpumemstr);
}
+ else if ((ob) && (ob->type == OB_GPENCIL)) {
+ ofs += BLI_snprintf(s + ofs, MAX_INFO_LEN - ofs,
+ IFACE_("Layers:%s | Frames:%s | Strokes:%s | Points:%s"),
+ stats_fmt.totgplayer, stats_fmt.totgpframe, stats_fmt.totgpstroke, stats_fmt.totgppoint);
+
+ ofs += BLI_strncpy_rlen(s + ofs, memstr, MAX_INFO_LEN - ofs);
+ ofs += BLI_strncpy_rlen(s + ofs, gpumemstr, MAX_INFO_LEN - ofs);
+ }
else if (stats_is_object_dynamic_topology_sculpt(ob, object_mode)) {
ofs += BLI_snprintf(s + ofs, MAX_INFO_LEN - ofs, IFACE_("Verts:%s | Tris:%s%s"), stats_fmt.totvert,
stats_fmt.tottri, gpumemstr);
diff --git a/source/blender/makesrna/intern/rna_gpencil.c b/source/blender/makesrna/intern/rna_gpencil.c
index 41dba57cc0e..e91889378a7 100644
--- a/source/blender/makesrna/intern/rna_gpencil.c
+++ b/source/blender/makesrna/intern/rna_gpencil.c
@@ -596,53 +596,6 @@ static void rna_GPencil_clear(bGPdata *gpd)
WM_main_add_notifier(NC_GPENCIL | ND_DATA | NA_EDITED, NULL);
}
-/* info functions */
-static int rna_GPencil_info_total_layers(PointerRNA *ptr)
-{
- bGPdata *gpd = (bGPdata *)ptr->id.data;
-
- return BLI_listbase_count(&gpd->layers);
-}
-
-static int rna_GPencil_info_total_frames(PointerRNA *ptr)
-{
- bGPdata *gpd = (bGPdata *)ptr->id.data;
- int tot = 0;
- for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) {
- tot += BLI_listbase_count(&gpl->frames);
- }
-
- return tot;
-}
-
-static int rna_GPencil_info_total_strokes(PointerRNA *ptr)
-{
- bGPdata *gpd = (bGPdata *)ptr->id.data;
- int tot = 0;
- for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) {
- for (bGPDframe *gpf = gpl->frames.first; gpf; gpf = gpf->next) {
- tot += BLI_listbase_count(&gpf->strokes);
- }
- }
-
- return tot;
-}
-
-static int rna_GPencil_info_total_points(PointerRNA *ptr)
-{
- bGPdata *gpd = (bGPdata *)ptr->id.data;
- int tot = 0;
- for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) {
- for (bGPDframe *gpf = gpl->frames.first; gpf; gpf = gpf->next) {
- for (bGPDstroke *gps = gpf->strokes.first; gps; gps = gps->next) {
- tot += gps->totpoints;
- }
- }
- }
-
- return tot;
-}
-
static void rna_GpencilVertex_groups_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
bGPDstroke *gps = ptr->data;
@@ -1312,27 +1265,6 @@ static void rna_def_gpencil_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Lines Only", "Show only edit lines for additional frames");
RNA_def_property_update(prop, NC_GPENCIL | ND_DATA, "rna_GPencil_update");
- /* info properties */
- prop = RNA_def_property(srna, "info_total_layers", PROP_INT, PROP_UNSIGNED);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_int_funcs(prop, "rna_GPencil_info_total_layers", NULL, NULL);
- RNA_def_property_ui_text(prop, "Total Layers", "Number of Layers");
-
- prop = RNA_def_property(srna, "info_total_frames", PROP_INT, PROP_UNSIGNED);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_int_funcs(prop, "rna_GPencil_info_total_frames", NULL, NULL);
- RNA_def_property_ui_text(prop, "Total Frames", "Number of Frames");
-
- prop = RNA_def_property(srna, "info_total_strokes", PROP_INT, PROP_UNSIGNED);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_int_funcs(prop, "rna_GPencil_info_total_strokes", NULL, NULL);
- RNA_def_property_ui_text(prop, "Total Strokes", "Number of Strokes");
-
- prop = RNA_def_property(srna, "info_total_points", PROP_INT, PROP_UNSIGNED);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_int_funcs(prop, "rna_GPencil_info_total_points", NULL, NULL);
- RNA_def_property_ui_text(prop, "Total Points", "Number of Points");
-
/* onion skinning */
prop = RNA_def_property(srna, "ghost_before_range", PROP_INT
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list