63 #define MAX_INFO_NUM_LEN 16
91 if (me_eval ==
nullptr) {
95 int totvert, totedge, totface, totloop;
100 if (subdiv_ccg !=
nullptr) {
103 else if (subsurf_runtime_data && subsurf_runtime_data->
resolution != 0) {
168 if ((me_eval !=
nullptr) && !
BLI_gset_add(objects_gset, (
void *)me_eval)) {
178 int totv = 0, totf = 0, tottri = 0;
301 a = nu->pntsu * nu->pntsv;
370 if (ss ==
nullptr || ss->
pbvh ==
nullptr) {
399 memset(stats, 0x0,
sizeof(*stats));
468 if (view_layer != view_layer_test) {
488 if (*stats_p ==
nullptr) {
502 #define SCENE_STATS_FMT_INT(_id) BLI_str_format_uint64_grouped(stats_fmt->_id, stats->_id)
531 #undef SCENE_STATS_FMT_INT
562 TIP_(
"Verts:%s/%s | Edges:%s/%s | Faces:%s/%s | Tris:%s"),
574 TIP_(
"Joints:%s/%s | Bones:%s/%s"),
592 TIP_(
"Layers:%s | Frames:%s | Strokes:%s | Points:%s"),
602 TIP_(
"Verts:%s | Tris:%s"),
609 TIP_(
"Verts:%s/%s | Faces:%s/%s"),
619 TIP_(
"Verts:%s | Faces:%s | Tris:%s"),
632 const char statusbar_flag)
634 char formatted_mem[15];
636 static char info[256];
637 int len =
sizeof(info);
661 int gpu_free_mem_kb, gpu_tot_mem_kb;
663 float gpu_total_gb = gpu_tot_mem_kb / 1048576.0f;
664 float gpu_free_gb = gpu_free_mem_kb / 1048576.0f;
668 if (gpu_free_mem_kb && gpu_tot_mem_kb) {
671 TIP_(
"VRAM: %.1f/%.1f GiB"),
672 gpu_total_gb - gpu_free_gb,
717 BLI_snprintf(values,
sizeof(values), (value2) ?
"%s / %s" :
"%s", value1, value2);
737 const float shadow_color[4] = {0.0f, 0.0f, 0.0f, 1.0f};
757 char labels[MAX_LABELS_COUNT][64];
772 int longest_label = 0;
774 for (i = 0; i < MAX_LABELS_COUNT; ++i) {
775 longest_label =
max_ii(longest_label,
BLF_width(font_id, labels[i],
sizeof(labels[i])));
779 int col2 =
x + longest_label + (0.5f *
U.widget_unit);
Blender kernel action and pose functionality.
bool BKE_pose_is_layer_visible(const struct bArmature *arm, const struct bPoseChannel *pchan)
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)
bool BKE_object_is_visible_in_viewport(const struct View3D *v3d, const struct Object *ob)
General operations, lookup, etc. for blender objects.
struct Mesh * BKE_object_get_evaluated_mesh(const struct Object *object)
struct Mesh * BKE_object_get_evaluated_mesh_no_subsurf(const 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_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)
float BLF_width(int fontid, const char *str, size_t str_len) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLF_enable(int fontid, int option)
void BLF_draw_default(float x, float y, float z, const char *str, size_t str_len) ATTR_NONNULL()
int BLF_set_default(void)
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)
#define LISTBASE_FOREACH(type, var, list)
MINLINE int max_ii(int a, int b)
MINLINE int poly_to_tri_count(int poly_count, int corner_count)
#define STRNCPY(dst, src)
size_t BLI_strncpy_rlen(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
size_t BLI_snprintf_rlen(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
void BLI_str_format_byte_unit(char dst[15], long long int bytes, bool base_10) ATTR_NONNULL()
#define ENUM_OPERATORS(_type, _max)
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 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_object_sculpt(const Object *ob, SceneStats *stats)
void ED_info_stats_clear(wmWindowManager *wm, ViewLayer *view_layer)
const char * ED_info_statusbar_string_ex(Main *bmain, Scene *scene, ViewLayer *view_layer, const char statusbar_flag)
static void stats_object_pose(const Object *ob, SceneStats *stats)
const char * ED_info_statusbar_string(Main *bmain, Scene *scene, ViewLayer *view_layer)
static void stats_object(Object *ob, const View3D *v3d_local, SceneStats *stats, GSet *objects_gset)
static void stats_update(Depsgraph *depsgraph, ViewLayer *view_layer, View3D *v3d_local, SceneStats *stats)
const char * ED_info_statistics_string(Main *bmain, Scene *scene, ViewLayer *view_layer)
static bool format_stats(Main *bmain, Scene *scene, ViewLayer *view_layer, View3D *v3d_local, SceneStatsFmt *stats_fmt)
static bool stats_mesheval(const Mesh *me_eval, bool is_selected, SceneStats *stats)
static void stats_object_edit(Object *obedit, SceneStats *stats)
static bool stats_is_object_dynamic_topology_sculpt(const Object *ob)
void ED_info_draw_stats(Main *bmain, Scene *scene, ViewLayer *view_layer, View3D *v3d_local, int x, int *y, int height)
size_t(* MEM_get_memory_in_use)(void)
void *(* MEM_mallocN)(size_t len, const char *str)
static void area(int d1, int d2, int e1, int e2, float weights[2])
_W64 unsigned int uintptr_t
unsigned __int64 uint64_t
struct EditLatt * editlatt
struct SubsurfRuntimeData * subsurf_runtime_data
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]
struct SceneStats * local_stats
LayerCollection * active_collection
struct SceneStats * stats
bScreen * WM_window_get_active_screen(const wmWindow *win)
ViewLayer * WM_window_get_active_view_layer(const wmWindow *win)