Blender V5.0
screen_intern.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2008 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include "DNA_space_types.h"
12
13struct ARegion;
14struct AZone;
15struct ReportList;
16struct bContext;
18struct bScreen;
19struct Main;
20struct rcti;
21struct ScrArea;
22struct ScrAreaMap;
23struct ScrEdge;
24struct ScrVert;
25struct WorkSpaceLayout;
26struct wmOperatorType;
27struct wmWindow;
28
29/* internal exports only */
30
43
44#define SCREEN_DIR_IS_VERTICAL(dir) (ELEM(dir, SCREEN_DIR_N, SCREEN_DIR_S))
45#define SCREEN_DIR_IS_HORIZONTAL(dir) (ELEM(dir, SCREEN_DIR_W, SCREEN_DIR_E))
46
53
54enum class AreaDockTarget {
56 Right, /* Right diagonal quadrant of area. */
57 Left, /* Left diagonal quadrant of area. */
58 Top, /* Top diagonal quadrant of area. */
59 Bottom, /* Bottom diagonal quadrant of area. */
60 Center, /* Middle portion of area. */
61};
62
63#define AZONEFADEIN (5.0f * U.widget_unit) /* when #AZone is totally visible */
64#define AZONEFADEOUT (6.5f * U.widget_unit) /* when we start seeing the #AZone */
65
66/* Edges must be within these to allow joining. */
67#define AREAJOINTOLERANCEX (AREAMINX * UI_SCALE_FAC)
68#define AREAJOINTOLERANCEY (HEADERY * UI_SCALE_FAC)
69
73#define BORDERPADDING (U.border_width * UI_SCALE_FAC + 3.0f * UI_SCALE_FAC)
74
78#define EDITORRADIUS (6.0f * UI_SCALE_FAC)
79
80/* Less expansion needed for global edges. */
81#define BORDERPADDING_GLOBAL (3.0f * UI_SCALE_FAC)
82
83#define AREA_CLOSE_FADEOUT 0.15f /* seconds */
84#define AREA_DOCK_FADEOUT 0.15f /* seconds */
85#define AREA_DOCK_FADEIN 0.15f /* seconds */
86#define AREA_JOIN_FADEOUT 0.15f /* seconds */
87#define AREA_SPLIT_FADEOUT 0.15f /* seconds */
88#define AREA_MOVE_LINE_FADEIN 0.1f /* seconds */
89#define AREA_MOVE_LINE_FADEOUT 0.15f /* seconds */
90
91/* `area.cc` */
92
96void ED_area_data_copy(ScrArea *area_dst, ScrArea *area_src, bool do_free);
97void ED_area_data_swap(ScrArea *area_dst, ScrArea *area_src);
98/* for quick toggle, can skip fades */
99void region_toggle_hidden(bContext *C, ARegion *region, bool do_fade);
100
101/* `screen_draw.cc` */
102
110 const wmWindow *win, ScrArea *sa1, ScrArea *sa2, eScreenDir dir, float anim_factor);
111void screen_draw_dock_preview(const wmWindow *win,
112 ScrArea *source,
113 ScrArea *target,
114 AreaDockTarget dock_target,
115 float factor,
116 int x,
117 int y,
118 float anim_factor);
119void screen_draw_split_preview(ScrArea *area, eScreenAxis dir_axis, float factor);
120
122 bScreen *screen,
123 eScreenAxis dir_axis,
124 float anim_factor);
125
127
129 bScreen *screen,
130 const rcti *rect,
131 float inner[4],
132 float outline[4],
133 float seconds);
134
135/* `screen_edit.cc` */
136
140bScreen *screen_add(Main *bmain, const char *name, const rcti *rect);
141void screen_data_copy(bScreen *to, bScreen *from);
145void screen_new_activate_prepare(const wmWindow *win, bScreen *screen_new);
146void screen_change_update(bContext *C, wmWindow *win, bScreen *screen);
152 bScreen *screen_old, bScreen *screen_new, Main *bmain, bContext *C, wmWindow *win);
153ScrArea *area_split(const wmWindow *win,
154 bScreen *screen,
155 ScrArea *area,
156 eScreenAxis dir_axis,
157 float fac,
158 bool merge);
163 bContext *C, ReportList *reports, bScreen *screen, ScrArea *sa1, ScrArea *sa2);
173void area_getoffsets(ScrArea *sa_a, ScrArea *sa_b, eScreenDir dir, int *r_offset1, int *r_offset2);
177bool screen_area_close(bContext *C, ReportList *reports, bScreen *screen, ScrArea *area);
178void screen_area_spacelink_add(const Scene *scene, ScrArea *area, eSpace_Type space_type);
179AZone *ED_area_actionzone_find_xy(ScrArea *area, const int xy[2]);
180
184bool area_regions_poll(bContext *C, const bScreen *screen, ScrArea *area);
185
186/* `screen_geometry.cc` */
187
188int screen_geom_area_height(const ScrArea *area);
189int screen_geom_area_width(const ScrArea *area);
190ScrVert *screen_geom_vertex_add_ex(ScrAreaMap *area_map, short x, short y);
191ScrVert *screen_geom_vertex_add(bScreen *screen, short x, short y);
200 const rcti *bounds_rect,
201 int mx,
202 int my,
203 int safety = BORDERPADDING);
208 const bScreen *screen,
209 int mx,
210 int my);
218void screen_geom_vertices_scale(const wmWindow *win, bScreen *screen);
223 const rcti *window_rect,
224 eScreenAxis dir_axis,
225 float fac);
230
231/* `screen_context.cc` */
232
236int ed_screen_context(const bContext *C, const char *member, bContextDataResult *result);
237
238extern "C" const char *screen_context_dir[]; /* doc access */
239
240/* `screendump.cc` */
241
244
245/* `workspace_layout_edit.cc` */
246
eSpace_Type
#define C
Definition RandGen.cpp:29
ATTR_WARN_UNUSED_RESULT const BMVert * v2
OrientationBounds merge(const OrientationBounds &cone_a, const OrientationBounds &cone_b)
const char * name
const char * screen_context_dir[]
ScrVert * screen_geom_vertex_add(bScreen *screen, short x, short y)
short screen_geom_find_area_split_point(const ScrArea *area, const rcti *window_rect, eScreenAxis dir_axis, float fac)
ScrArea * area_split(const wmWindow *win, bScreen *screen, ScrArea *area, eScreenAxis dir_axis, float fac, bool merge)
void ED_area_data_copy(ScrArea *area_dst, ScrArea *area_src, bool do_free)
Definition area.cc:2378
ScrEdge * screen_geom_edge_add_ex(ScrAreaMap *area_map, ScrVert *v1, ScrVert *v2)
ScrVert * screen_geom_vertex_add_ex(ScrAreaMap *area_map, short x, short y)
void SCREEN_OT_screenshot(wmOperatorType *ot)
void screen_draw_split_preview(ScrArea *area, eScreenAxis dir_axis, float factor)
void screen_draw_region_scale_highlight(ARegion *region)
#define BORDERPADDING
AZone * ED_area_actionzone_find_xy(ScrArea *area, const int xy[2])
ScrEdge * screen_geom_edge_add(bScreen *screen, ScrVert *v1, ScrVert *v2)
void screen_change_prepare(bScreen *screen_old, bScreen *screen_new, Main *bmain, bContext *C, wmWindow *win)
bool area_regions_poll(bContext *C, const bScreen *screen, ScrArea *area)
void screen_new_activate_prepare(const wmWindow *win, bScreen *screen_new)
void screen_geom_select_connected_edge(const wmWindow *win, ScrEdge *edge)
ScrEdge * screen_geom_area_map_find_active_scredge(const ScrAreaMap *area_map, const rcti *bounds_rect, int mx, int my, int safety=BORDERPADDING)
bool screen_geom_edge_is_horizontal(ScrEdge *se)
eScreenAxis
@ SCREEN_AXIS_V
@ SCREEN_AXIS_H
eScreenDir area_getorientation(ScrArea *sa_a, ScrArea *sa_b)
ScrEdge * screen_geom_find_active_scredge(const wmWindow *win, const bScreen *screen, int mx, int my)
bool workspace_layout_set_poll(const WorkSpaceLayout *layout)
bool screen_area_close(bContext *C, ReportList *reports, bScreen *screen, ScrArea *area)
void screen_draw_move_highlight(const wmWindow *win, bScreen *screen, eScreenAxis dir_axis, float anim_factor)
void SCREEN_OT_screenshot_area(wmOperatorType *ot)
void screen_change_update(bContext *C, wmWindow *win, bScreen *screen)
int screen_geom_area_width(const ScrArea *area)
void ED_area_data_swap(ScrArea *area_dst, ScrArea *area_src)
Definition area.cc:2411
eScreenDir
@ SCREEN_DIR_W
@ SCREEN_DIR_N
@ SCREEN_DIR_E
@ SCREEN_DIR_S
@ SCREEN_DIR_NONE
int ed_screen_context(const bContext *C, const char *member, bContextDataResult *result)
void screen_draw_dock_preview(const wmWindow *win, ScrArea *source, ScrArea *target, AreaDockTarget dock_target, float factor, int x, int y, float anim_factor)
int screen_geom_area_height(const ScrArea *area)
AreaDockTarget
void screen_data_copy(bScreen *to, bScreen *from)
void area_getoffsets(ScrArea *sa_a, ScrArea *sa_b, eScreenDir dir, int *r_offset1, int *r_offset2)
void screen_animate_area_highlight(wmWindow *win, bScreen *screen, const rcti *rect, float inner[4], float outline[4], float seconds)
void screen_draw_join_highlight(const wmWindow *win, ScrArea *sa1, ScrArea *sa2, eScreenDir dir, float anim_factor)
void region_toggle_hidden(bContext *C, ARegion *region, bool do_fade)
Definition area.cc:2358
bScreen * screen_add(Main *bmain, const char *name, const rcti *rect)
void screen_geom_vertices_scale(const wmWindow *win, bScreen *screen)
Main screen-layout calculation function.
int screen_area_join(bContext *C, ReportList *reports, bScreen *screen, ScrArea *sa1, ScrArea *sa2)
void screen_area_spacelink_add(const Scene *scene, ScrArea *area, eSpace_Type space_type)
Wrapper for bScreen.
struct Scene * scene
int xy[2]
Definition wm_draw.cc:178
wmOperatorType * ot
Definition wm_files.cc:4237