Blender V4.3
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
9#pragma once
10
11#include "DNA_space_types.h"
12
13struct ARegion;
14struct AZone;
15struct bContext;
17struct bScreen;
18struct Main;
19struct rcti;
20struct ScrAreaMap;
21struct ScrEdge;
22struct ScrVert;
23struct wmWindow;
24
25/* internal exports only */
26
39
40#define SCREEN_DIR_IS_VERTICAL(dir) (ELEM(dir, SCREEN_DIR_N, SCREEN_DIR_S))
41#define SCREEN_DIR_IS_HORIZONTAL(dir) (ELEM(dir, SCREEN_DIR_W, SCREEN_DIR_E))
42
49
50enum class AreaDockTarget {
51 None,
52 Right, /* Right diagonal quadrant of area. */
53 Left, /* Left diagonal quadrant of area. */
54 Top, /* Top diagonal quadrant of area. */
55 Bottom, /* Bottom diagonal quadrant of area. */
56 Center, /* Middle portion of area. */
57};
58
59#define AZONESPOTW UI_HEADER_OFFSET /* width of corner #AZone - max */
60#define AZONESPOTH (0.6f * U.widget_unit) /* height of corner #AZone */
61#define AZONEFADEIN (5.0f * U.widget_unit) /* when #AZone is totally visible */
62#define AZONEFADEOUT (6.5f * U.widget_unit) /* when we start seeing the #AZone */
63
64/* Edges must be within these to allow joining. */
65#define AREAJOINTOLERANCEX (AREAMINX * UI_SCALE_FAC)
66#define AREAJOINTOLERANCEY (HEADERY * UI_SCALE_FAC)
67
71#define BORDERPADDING ((3.0f * UI_SCALE_FAC) + U.pixelsize)
72
73/* `area.cc` */
74
78void ED_area_data_copy(ScrArea *area_dst, ScrArea *area_src, bool do_free);
79void ED_area_data_swap(ScrArea *area_dst, ScrArea *area_src);
80/* for quick toggle, can skip fades */
81void region_toggle_hidden(bContext *C, ARegion *region, bool do_fade);
82
83/* `screen_draw.cc` */
84
91void screen_draw_join_highlight(const wmWindow *win, ScrArea *sa1, ScrArea *sa2, eScreenDir dir);
93 ScrArea *source, ScrArea *target, AreaDockTarget dock_target, float factor, int x, int y);
94void screen_draw_split_preview(ScrArea *area, eScreenAxis dir_axis, float factor);
95
96void screen_draw_move_highlight(bScreen *screen, eScreenAxis dir_axis);
97
98/* `screen_edit.cc` */
99
103bScreen *screen_add(Main *bmain, const char *name, const rcti *rect);
104void screen_data_copy(bScreen *to, bScreen *from);
108void screen_new_activate_prepare(const wmWindow *win, bScreen *screen_new);
109void screen_change_update(bContext *C, wmWindow *win, bScreen *screen);
115 bScreen *screen_old, bScreen *screen_new, Main *bmain, bContext *C, wmWindow *win);
116ScrArea *area_split(const wmWindow *win,
117 bScreen *screen,
118 ScrArea *area,
119 eScreenAxis dir_axis,
120 float fac,
121 bool merge);
125int screen_area_join(bContext *C, bScreen *screen, ScrArea *sa1, ScrArea *sa2);
135void area_getoffsets(ScrArea *sa_a, ScrArea *sa_b, eScreenDir dir, int *r_offset1, int *r_offset2);
139bool screen_area_close(bContext *C, bScreen *screen, ScrArea *area);
140void screen_area_spacelink_add(const Scene *scene, ScrArea *area, eSpace_Type space_type);
141AZone *ED_area_actionzone_find_xy(ScrArea *area, const int xy[2]);
142
143/* `screen_geometry.cc` */
144
145int screen_geom_area_height(const ScrArea *area);
146int screen_geom_area_width(const ScrArea *area);
147ScrVert *screen_geom_vertex_add_ex(ScrAreaMap *area_map, short x, short y);
148ScrVert *screen_geom_vertex_add(bScreen *screen, short x, short y);
157 const rcti *bounds_rect,
158 int mx,
159 int my);
164 const bScreen *screen,
165 int mx,
166 int my);
174void screen_geom_vertices_scale(const wmWindow *win, bScreen *screen);
179 const rcti *window_rect,
180 eScreenAxis dir_axis,
181 float fac);
186
187/* `screen_context.cc` */
188
192int ed_screen_context(const bContext *C, const char *member, bContextDataResult *result);
193
194extern "C" const char *screen_context_dir[]; /* doc access */
195
196/* `screendump.cc` */
197
200
201/* `workspace_layout_edit.cc` */
202
eSpace_Type
ATTR_WARN_UNUSED_RESULT const BMVert * v2
OrientationBounds merge(const OrientationBounds &cone_a, const OrientationBounds &cone_b)
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:2281
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)
const char * screen_context_dir[]
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)
void screen_draw_dock_preview(ScrArea *source, ScrArea *target, AreaDockTarget dock_target, float factor, int x, int y)
void screen_new_activate_prepare(const wmWindow *win, bScreen *screen_new)
void screen_geom_select_connected_edge(const wmWindow *win, ScrEdge *edge)
bool screen_geom_edge_is_horizontal(ScrEdge *se)
eScreenAxis
@ SCREEN_AXIS_V
@ SCREEN_AXIS_H
eScreenDir area_getorientation(ScrArea *sa_a, ScrArea *sa_b)
int screen_area_join(bContext *C, bScreen *screen, ScrArea *sa1, ScrArea *sa2)
ScrEdge * screen_geom_find_active_scredge(const wmWindow *win, const bScreen *screen, int mx, int my)
bool workspace_layout_set_poll(const WorkSpaceLayout *layout)
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)
bool screen_area_close(bContext *C, bScreen *screen, ScrArea *area)
void ED_area_data_swap(ScrArea *area_dst, ScrArea *area_src)
Definition area.cc:2314
void screen_draw_move_highlight(bScreen *screen, eScreenAxis dir_axis)
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)
int screen_geom_area_height(const ScrArea *area)
AreaDockTarget
void screen_draw_join_highlight(const wmWindow *win, ScrArea *sa1, ScrArea *sa2, eScreenDir dir)
void screen_data_copy(bScreen *to, bScreen *from)
ScrEdge * screen_geom_area_map_find_active_scredge(const ScrAreaMap *area_map, const rcti *bounds_rect, int mx, int my)
void area_getoffsets(ScrArea *sa_a, ScrArea *sa_b, eScreenDir dir, int *r_offset1, int *r_offset2)
void region_toggle_hidden(bContext *C, ARegion *region, bool do_fade)
Definition area.cc:2261
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.
void screen_area_spacelink_add(const Scene *scene, ScrArea *area, eSpace_Type space_type)
Wrapper for bScreen.
int xy[2]
Definition wm_draw.cc:170
wmOperatorType * ot
Definition wm_files.cc:4125