70 #define MAX_INFO_NUM_LEN 16
98 if (me_eval ==
NULL) {
102 int totvert, totedge, totface, totloop;
169 int totv = 0, totf = 0, tottri = 0;
274 for (nu = nurbs->
first; nu; nu = nu->
next) {
432 if (!view_layer->
stats) {
436 *(view_layer->
stats) = stats;
441 if (view_layer->
stats) {
453 if (!view_layer->
stats) {
466 #define SCENE_STATS_FMT_INT(_id) BLI_str_format_uint64_grouped(stats_fmt->_id, stats->_id)
495 #undef SCENE_STATS_FMT_INT
526 TIP_(
"Verts:%s/%s | Edges:%s/%s | Faces:%s/%s | Tris:%s"),
538 TIP_(
"Joints:%s/%s | Bones:%s/%s"),
556 TIP_(
"Layers:%s | Frames:%s | Strokes:%s | Points:%s"),
566 TIP_(
"Verts:%s | Tris:%s"),
573 TIP_(
"Verts:%s/%s | Faces:%s/%s"),
583 TIP_(
"Verts:%s | Faces:%s | Tris:%s"),
598 char formatted_mem[15];
600 static char info[256];
601 int len =
sizeof(info);
625 int gpu_free_mem_kb, gpu_tot_mem_kb;
627 float gpu_total_gb = gpu_tot_mem_kb / 1048576.0f;
628 float gpu_free_gb = gpu_free_mem_kb / 1048576.0f;
632 if (gpu_free_mem_kb && gpu_tot_mem_kb) {
635 TIP_(
"VRAM: %.1f/%.1f GiB"),
636 gpu_total_gb - gpu_free_gb,
681 BLI_snprintf(values,
sizeof(values), (value2) ?
"%s / %s" :
"%s", value1, value2);
700 BLF_shadow(font_id, 5, (
const float[4]){0.0f, 0.0f, 0.0f, 1.0f});
718 char labels[MAX_LABELS_COUNT][64];
732 int longest_label = 0;
734 for (i = 0; i < MAX_LABELS_COUNT; ++i) {
735 longest_label =
max_ii(longest_label,
BLF_width(font_id, labels[i],
sizeof(labels[i])));
739 int col2 =
x + longest_label + (0.5f *
U.widget_unit);
const char * BKE_blender_version_string(void)
const char * BKE_collection_ui_name_get(struct Collection *collection)
struct ListBase * BKE_curve_editNurbs_get(struct Curve *cu)
display list (or rather multi purpose list) stuff.
void BKE_displist_count(const struct ListBase *lb, int *totvert, int *totface, int *tottri)
BMEditMesh * BKE_editmesh_from_object(struct Object *ob)
Return the BMEditMesh for a given object.
void BKE_gpencil_stats_update(struct bGPdata *gpd)
struct KeyBlock * BKE_keyblock_from_object(struct Object *ob)
#define FOREACH_OBJECT_END
#define FOREACH_OBJECT_BEGIN(view_layer, _instance)
General operations, lookup, etc. for blender objects.
struct Mesh * BKE_object_get_evaluated_mesh(struct Object *object)
A BVH for high poly meshes.
int BKE_pbvh_get_grid_num_faces(const PBVH *pbvh)
PBVHType BKE_pbvh_type(const PBVH *pbvh)
int BKE_pbvh_get_grid_num_vertices(const PBVH *pbvh)
struct Depsgraph * BKE_scene_ensure_depsgraph(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer)
void BKE_subdiv_ccg_topology_counters(const SubdivCCG *subdiv_ccg, int *r_num_vertices, int *r_num_edges, int *r_num_faces, int *r_num_loops)
void BLF_draw_default(float x, float y, float z, const char *str, size_t len) ATTR_NONNULL()
float BLF_width(int fontid, const char *str, size_t len) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLF_shadow_offset(int fontid, int x, int y)
void BLF_shadow(int fontid, int level, const float rgba[4]) ATTR_NONNULL(3)
void BLF_disable(int fontid, int option)
void BLF_enable(int fontid, int option)
unsigned int BLI_ghashutil_ptrhash(const void *key)
GSet * BLI_gset_new(GSetHashFP hashfp, GSetCmpFP cmpfp, const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
bool BLI_ghashutil_ptrcmp(const void *a, const void *b)
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
bool BLI_gset_add(GSet *gs, void *key)
MINLINE int max_ii(int a, int b)
MINLINE int poly_to_tri_count(const int poly_count, const int corner_count)
void BLI_str_format_byte_unit(char dst[15], long long int bytes, const bool base_10) ATTR_NONNULL()
#define STRNCPY(dst, src)
size_t BLI_strncpy_rlen(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
struct Depsgraph Depsgraph
#define DEG_OBJECT_ITER_FOR_RENDER_ENGINE_BEGIN(graph_, instance_)
#define DEG_OBJECT_ITER_FOR_RENDER_ENGINE_END
Object groups, one object can be in many groups at once.
#define OBEDIT_FROM_VIEW_LAYER(view_layer)
#define OBEDIT_FROM_OBACT(ob)
#define OBACT(_view_layer)
void GPU_mem_stats_get(int *totalmem, int *freemem)
bool GPU_mem_stats_supported(void)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
Read Guarded memory(de)allocation.
void UI_FontThemeColor(int fontid, int colorid)
const Depsgraph * depsgraph
static void stats_object_sculpt(Object *ob, SceneStats *stats)
static void get_stats_string(char *info, int len, size_t *ofs, ViewLayer *view_layer, SceneStatsFmt *stats_fmt)
#define SCENE_STATS_FMT_INT(_id)
static void stats_row(int col1, const char *key, int col2, const char *value1, const char *value2, int *y, int height)
static void stats_update(Depsgraph *depsgraph, ViewLayer *view_layer)
const char * ED_info_statusbar_string(Main *bmain, Scene *scene, ViewLayer *view_layer)
static bool stats_is_object_dynamic_topology_sculpt(Object *ob)
static void stats_object(Object *ob, SceneStats *stats, GSet *objects_gset)
const char * ED_info_statistics_string(Main *bmain, Scene *scene, ViewLayer *view_layer)
static bool format_stats(Main *bmain, Scene *scene, ViewLayer *view_layer, SceneStatsFmt *stats_fmt)
struct SceneStatsFmt SceneStatsFmt
static void stats_object_edit(Object *obedit, SceneStats *stats)
void ED_info_stats_clear(ViewLayer *view_layer)
struct SceneStats SceneStats
static bool stats_mesheval(Mesh *me_eval, bool is_selected, SceneStats *stats)
static void stats_object_pose(Object *ob, SceneStats *stats)
static const char * info_statusbar_string(Main *bmain, Scene *scene, ViewLayer *view_layer, char statusbar_flag)
void ED_info_draw_stats(Main *bmain, Scene *scene, ViewLayer *view_layer, int x, int *y, int height)
void(* MEM_freeN)(void *vmemh)
size_t(* MEM_get_memory_in_use)(void)
void *(* MEM_callocN)(size_t len, const char *str)
_W64 unsigned int uintptr_t
unsigned __int64 uint64_t
struct EditLatt * editlatt
struct Collection * collection
struct SubdivCCG * subdiv_ccg
struct CurveCache * curve_cache
struct SculptSession * sculpt
char totlampsel[MAX_INFO_NUM_LEN]
char totgplayer[MAX_INFO_NUM_LEN]
char totobjsel[MAX_INFO_NUM_LEN]
char totface[MAX_INFO_NUM_LEN]
char totvert[MAX_INFO_NUM_LEN]
char totbone[MAX_INFO_NUM_LEN]
char totgpstroke[MAX_INFO_NUM_LEN]
char tottri[MAX_INFO_NUM_LEN]
char totgpframe[MAX_INFO_NUM_LEN]
char totvertsculpt[MAX_INFO_NUM_LEN]
char totfacesculpt[MAX_INFO_NUM_LEN]
char totlamp[MAX_INFO_NUM_LEN]
char totfacesel[MAX_INFO_NUM_LEN]
char totedge[MAX_INFO_NUM_LEN]
char totgppoint[MAX_INFO_NUM_LEN]
char totobj[MAX_INFO_NUM_LEN]
char totedgesel[MAX_INFO_NUM_LEN]
char totvertsel[MAX_INFO_NUM_LEN]
char totbonesel[MAX_INFO_NUM_LEN]
LayerCollection * active_collection
struct SceneStats * stats
struct bPoseChannel * next