|
Blender V4.3
|
#include "DNA_screen_types.h"#include "DNA_userdef_types.h"#include "BLI_listbase.h"#include "BLI_math_vector.h"#include "BLI_rect.h"#include "UI_interface.hh"#include "interface_intern.hh"#include "MEM_guardedalloc.h"Go to the source code of this file.
Classes | |
| struct | ButAlign |
Macros | |
| #define | SIDE_TO_UI_BUT_ALIGN |
| #define | SIDE1(_s) (((_s) + 1) % TOTSIDES) |
| #define | OPPOSITE(_s) (((_s) + 2) % TOTSIDES) |
| #define | SIDE2(_s) (((_s) + 3) % TOTSIDES) |
| #define | IS_COLUMN(_s) ((_s) % 2) |
| #define | STITCH(_s) (1 << (_s)) |
| #define | MAX_DELTA 0.45f * max_ii(UI_UNIT_Y, UI_UNIT_X) |
Enumerations | |
| enum | { LEFT = 0 , TOP = 1 , RIGHT = 2 , DOWN = 3 , TOTSIDES = 4 , STITCH_LEFT = 1 << LEFT , STITCH_TOP = 1 << TOP , STITCH_RIGHT = 1 << RIGHT , STITCH_DOWN = 1 << DOWN } |
Functions | |
| bool | ui_but_can_align (const uiBut *but) |
| static void | block_align_proximity_compute (ButAlign *butal, ButAlign *butal_other) |
| static void | block_align_stitch_neighbors (ButAlign *butal, const int side, const int side_opp, const int side_s1, const int side_s2, const int align, const int align_opp, const float co) |
| static int | ui_block_align_butal_cmp (const void *a, const void *b) |
| static void | ui_block_align_but_to_region (uiBut *but, const ARegion *region) |
| void | ui_block_align_calc (uiBlock *block, const ARegion *region) |
| int | ui_but_align_opposite_to_area_align_get (const ARegion *region) |
| #define IS_COLUMN | ( | _s | ) | ((_s) % 2) |
Definition at line 91 of file interface_align.cc.
Referenced by block_align_proximity_compute().
Definition at line 97 of file interface_align.cc.
Referenced by block_align_proximity_compute(), and ui_block_align_calc().
Definition at line 87 of file interface_align.cc.
Referenced by block_align_proximity_compute(), and ui_block_align_calc().
Definition at line 86 of file interface_align.cc.
Referenced by block_align_proximity_compute(), and ui_block_align_calc().
Definition at line 88 of file interface_align.cc.
Referenced by block_align_proximity_compute(), and ui_block_align_calc().
| #define SIDE_TO_UI_BUT_ALIGN |
| #define STITCH | ( | _s | ) | (1 << (_s)) |
Definition at line 94 of file interface_align.cc.
Referenced by block_align_proximity_compute(), and block_align_stitch_neighbors().
| anonymous enum |
| Enumerator | |
|---|---|
| LEFT | |
| TOP | |
| RIGHT | |
| DOWN | |
| TOTSIDES | |
| STITCH_LEFT | |
| STITCH_TOP | |
| STITCH_RIGHT | |
| STITCH_DOWN | |
Definition at line 63 of file interface_align.cc.
This function checks a pair of buttons (assumed in a same align group), and if they are neighbors, set needed data accordingly.
Definition at line 120 of file interface_align.cc.
References ButAlign::borders, ButAlign::but, ButAlign::dists, DOWN, fabsf, ButAlign::flags, IS_COLUMN, LEFT, MAX_DELTA, max_ff(), ButAlign::neighbors, OPPOSITE, RIGHT, SIDE1, SIDE2, STITCH, TOP, and ui_but_can_align().
Referenced by ui_block_align_calc().
|
static |
This function takes care of case described in this schema:
+-----------+-----------+ | BUT 1 | BUT 2 | |-----------------------+ | BUT 3 | +-----------+
Here, BUT 3 RIGHT side would not get 'dragged' to align with BUT 1 RIGHT side, since BUT 3 has not RIGHT neighbor. So, this function, when called with BUT 1, will 'walk' the whole column in side_s1 direction (TOP or DOWN when called for RIGHT side), and force buttons like BUT 3 to align as needed, if BUT 1 and BUT 3 were detected as needing top-right corner stitching in block_align_proximity_compute() step.
Definition at line 254 of file interface_align.cc.
References ButAlign::borders, ButAlign::but, ButAlign::dists, uiBut::drawflag, ButAlign::flags, LEFT, ButAlign::neighbors, STITCH, TOP, UI_BUT_ALIGN_STITCH_LEFT, and UI_BUT_ALIGN_STITCH_TOP.
Referenced by ui_block_align_calc().
Definition at line 336 of file interface_align.cc.
References BLI_rctf_size_x(), BLI_rctf_size_y(), uiBut::drawflag, uiBut::rect, UI_BUT_ALIGN, UI_BUT_ALIGN_DOWN, UI_BUT_ALIGN_LEFT, UI_BUT_ALIGN_RIGHT, UI_BUT_ALIGN_TOP, rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.
Referenced by ui_block_align_calc().
|
static |
Helper to sort ButAlign items by:
Definition at line 307 of file interface_align.cc.
References uiBut::alignnr, b, ButAlign::borders, ButAlign::but, LEFT, and TOP.
Referenced by ui_block_align_calc().
Compute the alignment of all 'align groups' of buttons in given block.
This is using an order-independent algorithm, i.e. alignment of buttons should be OK regardless of order in which they are added to the block.
Definition at line 366 of file interface_align.cc.
References uiBut::alignnr, ARRAY_SIZE, BLI_assert, block_align_proximity_compute(), block_align_stitch_neighbors(), ButAlign::borders, ButAlign::but, uiBlock::buttons, copy_v4_fl(), ButAlign::dists, DOWN, uiBut::drawflag, fabsf, FLT_MAX, IS_EQF, LEFT, LISTBASE_FOREACH, MAX_DELTA, MEM_freeN(), MEM_mallocN, ButAlign::neighbors, OPPOSITE, RIGHT, SIDE1, SIDE2, SIDE_TO_UI_BUT_ALIGN, TOP, TOTSIDES, ui_block_align_but_to_region(), ui_block_align_butal_cmp(), and UI_BTYPE_TAB.
Referenced by UI_block_end_ex().
Definition at line 737 of file interface_align.cc.
References ARegion::alignment, ARegion::prev, RGN_ALIGN_BOTTOM, RGN_ALIGN_ENUM_FROM_MASK, RGN_ALIGN_LEFT, RGN_ALIGN_RIGHT, RGN_ALIGN_TOP, RGN_SPLIT_PREV, UI_BUT_ALIGN_DOWN, UI_BUT_ALIGN_LEFT, UI_BUT_ALIGN_RIGHT, and UI_BUT_ALIGN_TOP.
Referenced by template_ID_tabs(), and ui_item_enum_expand_tabs().
| bool ui_but_can_align | ( | const uiBut * | but | ) |
Definition at line 99 of file interface_align.cc.
References BLI_rctf_size_x(), BLI_rctf_size_y(), ELEM, uiBut::rect, uiBut::type, UI_BTYPE_CHECKBOX, UI_BTYPE_CHECKBOX_N, UI_BTYPE_LABEL, UI_BTYPE_SEPR, UI_BTYPE_SEPR_LINE, UI_BTYPE_SEPR_SPACER, and UI_BTYPE_TAB.
Referenced by block_align_proximity_compute(), ui_def_but(), and ui_item_align().