10#define DNA_DEPRECATED_ALLOW
16#include <fmt/format.h>
156 printf(
"Error reading Screen %s... removing it.\n", screen->
id.
name + 2);
232 if (pt->rna_ext.free) {
233 pt->rna_ext.free(pt->rna_ext.data);
240 if (ht->rna_ext.free) {
241 ht->rna_ext.free(ht->rna_ext.data);
260 if (st->spaceid == spaceid) {
270 if (art->regionid == regionid) {
287 printf(
"error: redefinition of spacetype %s\n", stype->
name);
317 if (st && st->
free) {
332 *new_panel = *old_panel;
333 new_panel->
runtime = new_runtime;
354 dst->
runtime = MEM_new<blender::bke::ARegionRuntime>(__func__);
390 region->
runtime = MEM_new<blender::bke::ARegionRuntime>(__func__);
427 if (lock_flags != 0) {
428 art->do_lock = (art->lock & lock_flags);
448 if (region_iter->regiontype == region_type) {
449 region = region_iter;
463 ID *new_id) =
nullptr;
495 if (region->runtime->gizmo_map !=
nullptr) {
522 const bool default_closed)
527 if (logical_time == 0) {
529 state->last_used = 0;
533 if (
state->idname == idname) {
534 state->last_used = logical_time;
541 state->last_used = logical_time;
549 panel->
runtime = MEM_new<Panel_Runtime>(__func__);
550 panel->
type = panel_type;
589 if (panel->runtime->custom_data_ptr) {
590 MEM_delete(panel->runtime->custom_data_ptr);
602 if (art && art->
free) {
607 printf(
"regiondata free error\n");
611 region->
runtime->type->free(region);
617 if (uilst->dyn_data && uilst->dyn_data->free_runtime_data_fn) {
618 uilst->dyn_data->free_runtime_data_fn(uilst);
620 if (uilst->properties) {
626 if (region->
runtime->gizmo_map !=
nullptr) {
680 if (se->v1 == v1 && se->v2 ==
v2) {
700 if (verg->newv ==
nullptr) {
703 if (v1->
newv ==
nullptr) {
704 if (v1->
vec.
x == verg->vec.x && v1->
vec.
y == verg->vec.y) {
717 se->v1 = se->v1->newv;
720 se->v2 = se->v2->newv;
756 if (verg->v1 == se->
v1 && verg->v2 == se->
v2) {
772 printf(
"error: area %d edge 1 doesn't exist\n", a);
779 printf(
"error: area %d edge 2 doesn't exist\n", a);
786 printf(
"error: area %d edge 3 doesn't exist\n", a);
793 printf(
"error: area %d edge 4 doesn't exist\n", a);
838 if (region->regiontype == region_type) {
850 if (region->regiontype == region_type) {
861 if (area ==
nullptr) {
877 if (area ==
nullptr) {
894 if (region_type == region->regiontype) {
937 if (space_index != -1) {
938 return fmt::format(
"areas[{}].spaces[{}]", area_index, space_index);
953 if (
size > maxsize) {
991 if (v3d->
camera ==
nullptr) {
1020 memcpy(shading, shading_default,
sizeof(*shading));
1024 const int space_type,
1041 return powf((
float(
M_SQRT2) + camzoom / 50.0f), 2.0f) / 4.0f;
1046 return ((
sqrtf(4.0f * zoomfac) -
float(
M_SQRT2)) * 50.0f);
1056 return (screen->
winid != 0);
1069 region->alignment = alignment;
1091 if (shading->
prop) {
1098 if (shading->
prop) {
1106 ARegion region_copy = *region;
1107 region_copy.
runtime =
nullptr;
1120 switch (spacetype) {
1134 printf(
"regiondata write missing!\n");
1138 printf(
"regiondata write missing!\n");
1155 Panel panel_copy = *panel;
1225 if (all_states.
size() <= max_kept) {
1228 std::sort(all_states.
begin(),
1231 return a->last_used < b->last_used;
1244 panel->runtime = MEM_new<Panel_Runtime>(__func__);
1245 panel->runtime_flag = 0;
1246 panel->activedata =
nullptr;
1247 panel->type =
nullptr;
1248 panel->drawname =
nullptr;
1276 ui_list->type =
nullptr;
1277 ui_list->dyn_data =
nullptr;
1285 ui_preview->tag = 0;
1312 rv3d->
sms =
nullptr;
1324 region->
runtime = MEM_new<blender::bke::ARegionRuntime>(__func__);
1325 region->
v2d.
sms =
nullptr;
1332 if (region->regiontype ==
RGN_TYPE_WINDOW && region->regiondata ==
nullptr) {
1336 rv3d->
persp = char(v3d->persp);
1337 rv3d->
view = char(v3d->view);
1338 rv3d->
dist = v3d->dist;
1341 region->regiondata = rv3d;
1357 area->
type =
nullptr;
1438 if (se->v1 ==
nullptr) {
1460 "Region type %d missing in space type \"%s\" (id: %d) - removing region",
#define IDP_BlendDataRead(reader, prop)
void IDP_FreeProperty(IDProperty *prop)
void IDP_BlendWrite(BlendWriter *writer, const IDProperty *prop)
@ IDTYPE_FLAGS_NO_ANIMDATA
@ IDTYPE_FLAGS_ONLY_APPEND
@ IDTYPE_FLAGS_NO_MEMFILE_UNDO
#define MAIN_ID_SESSION_UID_UNSET
void BKE_id_blend_write(BlendWriter *writer, ID *id)
#define BKE_LIB_FOREACHID_PROCESS_FUNCTION_CALL(data_, func_call_)
#define BKE_LIB_FOREACHID_PROCESS_IDSUPER(data_, id_super_, cb_flag_)
LibraryForeachIDFlag BKE_lib_query_foreachid_process_flags_get(const LibraryForeachIDData *data)
@ IDWALK_DO_DEPRECATED_POINTERS
void BKE_previewimg_blend_write(BlendWriter *writer, const PreviewImage *prv)
void BKE_previewimg_free(PreviewImage **prv)
void BKE_previewimg_blend_read(BlendDataReader *reader, PreviewImage *prv)
#define BLI_assert_unreachable()
int BLI_findindex(const ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findlink(const ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(ListBase *lb)
void BLI_freelinkN(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
void void BLI_freelistN(ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH_INDEX(type, var, list, index_var)
void BLI_remlink(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void void void void void BLI_duplicatelist(ListBase *dst, const ListBase *src) ATTR_NONNULL(1
void copy_qt_qt(float q[4], const float a[4])
MINLINE void copy_v3_v3(float r[3], const float a[3])
bool BLI_rcti_isect_pt_v(const struct rcti *rect, const int xy[2])
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
char * BLI_strdupn(const char *str, size_t len) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define STRNCPY_UTF8(dst, src)
#define SET_FLAG_FROM_TEST(value, test, flag)
Compatibility-like things for windows.
#define BLO_write_struct_at_address_with_filecode(writer, filecode, struct_name, address, data_ptr)
#define BLO_write_struct(writer, struct_name, data_ptr)
void BLO_read_string(BlendDataReader *reader, char **ptr_p)
void BLO_write_string(BlendWriter *writer, const char *data_ptr)
#define BLO_read_struct_list(reader, struct_name, list)
#define BLO_write_struct_list(writer, struct_name, list_ptr)
#define BLO_read_struct(reader, struct_name, ptr_p)
#define BLO_write_struct_at_address(writer, struct_name, address, data_ptr)
#define BLT_I18NCONTEXT_ID_SCREEN
void BPY_callback_screen_free(ARegionType *art)
#define CLOG_WARN(clg_ref,...)
#define DNA_struct_default_get(struct_name)
@ LAYOUT_PANEL_STATE_FLAG_OPEN
@ AREA_FLAG_ACTIVE_TOOL_UPDATE
#define AREAMAP_FROM_SCREEN(screen)
@ RGN_FLAG_TEMP_REGIONDATA
@ RGN_FLAG_SEARCH_FILTER_ACTIVE
Read Guarded memory(de)allocation.
BMesh const char void * data
ATTR_WARN_UNUSED_RESULT const BMVert * v2
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
constexpr int64_t size() const
constexpr const char * data() const
void append(const T &value)
Span< T > as_span() const
void * MEM_callocN(size_t len, const char *str)
void * MEM_dupallocN(const void *vmemh)
void MEM_freeN(void *vmemh)
void region_blend_read_data(BlendDataReader *reader, ARegion *region)
void region_blend_write(BlendWriter *writer, ARegion *region)
static void(* region_refresh_tag_gizmomap_callback)(wmGizmoMap *)
static void area_region_panels_free_recursive(Panel *panel)
static void(* region_free_gizmomap_callback)(wmGizmoMap *)
void BKE_screen_remove_unused_scrverts(bScreen *screen)
void BKE_screen_view3d_shading_blend_read_data(BlendDataReader *reader, View3DShading *shading)
bool BKE_screen_is_used(const bScreen *screen)
void BKE_screen_area_map_blend_write(BlendWriter *writer, ScrAreaMap *area_map)
void BKE_spacetypes_free()
static void regions_remove_invalid(SpaceType *space_type, ListBase *regionbase)
void BKE_screen_remove_unused_scredges(bScreen *screen)
static void screen_blend_write(BlendWriter *writer, ID *id, const void *id_address)
ARegion * BKE_area_find_region_xy(const ScrArea *area, const int regiontype, const int xy[2])
void BKE_spacedata_copylist(ListBase *lb_dst, ListBase *lb_src)
static void layout_panel_state_delete(LayoutPanelState *state)
LayoutPanelState * BKE_panel_layout_panel_state_ensure(Panel *panel, const StringRef idname, const bool default_closed)
float BKE_screen_view3d_zoom_from_fac(float zoomfac)
void BKE_screen_area_blend_read_after_liblink(BlendLibReader *reader, ID *parent_id, ScrArea *area)
void BKE_spacedata_callback_id_remap_set(void(*func)(ScrArea *area, SpaceLink *sl, ID *, ID *))
ARegion * BKE_screen_find_main_region_at_xy(const bScreen *screen, const int space_type, const int xy[2])
void BKE_screen_remove_double_scrverts(bScreen *screen)
bool BKE_screen_blend_read_data(BlendDataReader *reader, bScreen *screen)
void BKE_spacetype_register(std::unique_ptr< SpaceType > st)
ARegion * BKE_area_find_region_active_win(const ScrArea *area)
void BKE_spacedata_freelist(ListBase *lb)
static void write_area(BlendWriter *writer, ScrArea *area)
std::optional< std::string > BKE_screen_path_from_screen_to_space(const PointerRNA *ptr)
ScrArea * BKE_screen_area_map_find_area_xy(const ScrAreaMap *areamap, const int spacetype, const int xy[2])
ARegion * BKE_area_region_new()
static void region_copylist(SpaceType *st, ListBase *lb_dst, ListBase *lb_src)
Span< std::unique_ptr< SpaceType > > BKE_spacetypes_list()
void BKE_screen_view3d_shading_blend_write(BlendWriter *writer, View3DShading *shading)
void BKE_region_callback_free_gizmomap_set(void(*callback)(wmGizmoMap *))
ARegion * BKE_screen_find_region_xy(const bScreen *screen, const int regiontype, const int xy[2])
void BKE_screen_sort_scrvert(ScrVert **v1, ScrVert **v2)
ScrEdge * BKE_screen_find_edge(const bScreen *screen, ScrVert *v1, ScrVert *v2)
static void remove_least_recently_used_panel_states(Panel &panel, const int64_t max_kept)
static void direct_link_panel_list(BlendDataReader *reader, ListBase *lb)
static void write_region(BlendWriter *writer, ARegion *region, int spacetype)
static Vector< std::unique_ptr< SpaceType > > & get_space_types()
void BKE_screen_area_free(ScrArea *area)
bool BKE_spacetype_exists(int spaceid)
SpaceType * BKE_spacetype_from_id(int spaceid)
static void write_panel_list(BlendWriter *writer, ListBase *lb)
ARegionType * BKE_regiontype_from_id(const SpaceType *st, int regionid)
void BKE_screen_header_alignment_reset(bScreen *screen)
ARegion * BKE_region_find_in_listbase_by_type(const ListBase *regionbase, const int region_type)
void BKE_screen_area_map_free(ScrAreaMap *area_map)
static CLG_LogRef LOG_BLEND_DOVERSION
void BKE_spacedata_draw_locks(ARegionDrawLockFlags lock_flags)
void BKE_spacedata_id_unref(ScrArea *area, SpaceLink *sl, ID *id)
ARegion * BKE_screen_find_region_type(const bScreen *screen, const int region_type)
void BKE_area_region_free(SpaceType *st, ARegion *region)
void BKE_screen_gizmo_tag_refresh(bScreen *screen)
bool BKE_screen_is_fullscreen_area(const bScreen *screen)
bool BKE_screen_area_map_blend_read_data(BlendDataReader *reader, ScrAreaMap *area_map)
ScrArea * BKE_screen_find_big_area(const bScreen *screen, const int spacetype, const short min)
static void(* spacedata_id_remap_cb)(ScrArea *area, SpaceLink *sl, ID *old_id, ID *new_id)
void BKE_screen_view3d_scene_sync(bScreen *screen, Scene *scene)
void BKE_panel_free(Panel *panel)
void BKE_screen_remove_double_scredges(bScreen *screen)
void BKE_region_callback_refresh_tag_gizmomap_set(void(*callback)(wmGizmoMap *))
void BKE_screen_runtime_refresh_for_blendfile(bScreen *screen)
float BKE_screen_view3d_zoom_to_fac(float camzoom)
Panel * BKE_panel_new(PanelType *panel_type)
void BKE_screen_view3d_shading_init(View3DShading *shading)
ARegion * BKE_area_find_region_type(const ScrArea *area, int region_type)
ScrArea * BKE_screen_find_area_xy(const bScreen *screen, const int spacetype, const int xy[2])
ARegion * BKE_area_region_copy(const SpaceType *st, const ARegion *region)
void BKE_screen_view3d_sync(View3D *v3d, Scene *scene)
ScrArea * BKE_screen_find_area_from_space(const bScreen *screen, const SpaceLink *sl)
static void direct_link_area(BlendDataReader *reader, ScrArea *area)
static void write_uilist(BlendWriter *writer, uiList *ui_list)
void BKE_area_region_panels_free(ListBase *panels)
static void screen_foreach_id(ID *id, LibraryForeachIDData *data)
ARegion * BKE_spacedata_find_region_type(const SpaceLink *slink, const ScrArea *area, int region_type)
void BKE_screen_view3d_do_versions_250(View3D *v3d, ListBase *regions)
static void screen_blend_read_after_liblink(BlendLibReader *reader, ID *id)
void BKE_screen_free_data(bScreen *screen)
static void direct_link_region(BlendDataReader *reader, ARegion *region, int spacetype)
void BKE_screen_foreach_id_screen_area(LibraryForeachIDData *data, ScrArea *area)
static void panel_list_copy(ListBase *newlb, const ListBase *lb)
static void screen_free_data(ID *id)
void *(* duplicate)(void *poin)
ListBase panels_category_active
ARegionRuntimeHandle * runtime
char idname[BKE_ST_MAXNAME]
ListBase layout_panel_states
struct Panel_Runtime * runtime
uint32_t layout_panel_states_clock
struct SmoothView3DStore * sms
struct ViewRender * view_render
struct RegionView3D * localvd
struct wmTimer * smooth_timer
ScrGlobalAreaData * global
SpaceLink *(* duplicate)(SpaceLink *sl)
void(* free)(SpaceLink *sl)
void(* blend_read_data)(BlendDataReader *reader, SpaceLink *space_link)
void(* blend_read_after_liblink)(BlendLibReader *reader, ID *parent_id, SpaceLink *space_link)
char name[BKE_ST_MAXNAME]
void(* blend_write)(BlendWriter *writer, SpaceLink *space_link)
void(* foreach_id)(SpaceLink *space_link, LibraryForeachIDData *data)
struct SmoothView2DStore * sms
struct wmTooltipState * tool_tip
struct wmTimer * animtimer
struct ARegion * active_region