diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-04-17 07:17:24 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-04-17 07:21:24 +0300 |
commit | e12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch) | |
tree | 8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/editors/interface/interface_region_hud.c | |
parent | b3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (diff) |
ClangFormat: apply to source, most of intern
Apply clang format as proposed in T53211.
For details on usage and instructions for migrating branches
without conflicts, see:
https://wiki.blender.org/wiki/Tools/ClangFormat
Diffstat (limited to 'source/blender/editors/interface/interface_region_hud.c')
-rw-r--r-- | source/blender/editors/interface/interface_region_hud.c | 473 |
1 files changed, 240 insertions, 233 deletions
diff --git a/source/blender/editors/interface/interface_region_hud.c b/source/blender/editors/interface/interface_region_hud.c index f6a5c9611af..a1f4b71dc6d 100644 --- a/source/blender/editors/interface/interface_region_hud.c +++ b/source/blender/editors/interface/interface_region_hud.c @@ -42,7 +42,6 @@ #include "RNA_access.h" - #include "UI_interface.h" #include "UI_view2d.h" @@ -54,32 +53,29 @@ #include "interface_intern.h" #include "GPU_framebuffer.h" - /* -------------------------------------------------------------------- */ /** \name Utilities * \{ */ static bool last_redo_poll(const bContext *C) { - wmOperator *op = WM_operator_last_redo(C); - if (op == NULL) { - return false; - } - bool success = false; - if (WM_operator_repeat_check(C, op) && - WM_operator_check_ui_empty(op->type) == false) - { - success = WM_operator_poll((bContext *)C, op->type); - } - return success; + wmOperator *op = WM_operator_last_redo(C); + if (op == NULL) { + return false; + } + bool success = false; + if (WM_operator_repeat_check(C, op) && WM_operator_check_ui_empty(op->type) == false) { + success = WM_operator_poll((bContext *)C, op->type); + } + return success; } static void hud_region_hide(ARegion *ar) { - ar->flag |= RGN_FLAG_HIDDEN; - /* Avoids setting 'AREA_FLAG_REGION_SIZE_UPDATE' - * since other regions don't depend on this. */ - BLI_rcti_init(&ar->winrct, 0, 0, 0, 0); + ar->flag |= RGN_FLAG_HIDDEN; + /* Avoids setting 'AREA_FLAG_REGION_SIZE_UPDATE' + * since other regions don't depend on this. */ + BLI_rcti_init(&ar->winrct, 0, 0, 0, 0); } /** \} */ @@ -90,43 +86,43 @@ static void hud_region_hide(ARegion *ar) static bool hud_panel_operator_redo_poll(const bContext *C, PanelType *UNUSED(pt)) { - return last_redo_poll(C); + return last_redo_poll(C); } static void hud_panel_operator_redo_draw_header(const bContext *C, Panel *pa) { - wmOperator *op = WM_operator_last_redo(C); - BLI_strncpy(pa->drawname, RNA_struct_ui_name(op->type->srna), sizeof(pa->drawname)); + wmOperator *op = WM_operator_last_redo(C); + BLI_strncpy(pa->drawname, RNA_struct_ui_name(op->type->srna), sizeof(pa->drawname)); } static void hud_panel_operator_redo_draw(const bContext *C, Panel *pa) { - wmOperator *op = WM_operator_last_redo(C); - if (op == NULL) { - return; - } - if (!WM_operator_check_ui_enabled(C, op->type->name)) { - uiLayoutSetEnabled(pa->layout, false); - } - uiLayout *col = uiLayoutColumn(pa->layout, false); - uiTemplateOperatorRedoProperties(col, C); + wmOperator *op = WM_operator_last_redo(C); + if (op == NULL) { + return; + } + if (!WM_operator_check_ui_enabled(C, op->type->name)) { + uiLayoutSetEnabled(pa->layout, false); + } + uiLayout *col = uiLayoutColumn(pa->layout, false); + uiTemplateOperatorRedoProperties(col, C); } static void hud_panels_register(ARegionType *art, int space_type, int region_type) { - PanelType *pt; - - pt = MEM_callocN(sizeof(PanelType), __func__); - strcpy(pt->idname, "OPERATOR_PT_redo"); - strcpy(pt->label, N_("Redo")); - strcpy(pt->translation_context, BLT_I18NCONTEXT_DEFAULT_BPYRNA); - pt->draw_header = hud_panel_operator_redo_draw_header; - pt->draw = hud_panel_operator_redo_draw; - pt->poll = hud_panel_operator_redo_poll; - pt->space_type = space_type; - pt->region_type = region_type; - pt->flag |= PNL_DEFAULT_CLOSED; - BLI_addtail(&art->paneltypes, pt); + PanelType *pt; + + pt = MEM_callocN(sizeof(PanelType), __func__); + strcpy(pt->idname, "OPERATOR_PT_redo"); + strcpy(pt->label, N_("Redo")); + strcpy(pt->translation_context, BLT_I18NCONTEXT_DEFAULT_BPYRNA); + pt->draw_header = hud_panel_operator_redo_draw_header; + pt->draw = hud_panel_operator_redo_draw; + pt->poll = hud_panel_operator_redo_poll; + pt->space_type = space_type; + pt->region_type = region_type; + pt->flag |= PNL_DEFAULT_CLOSED; + BLI_addtail(&art->paneltypes, pt); } /** \} */ @@ -136,229 +132,240 @@ static void hud_panels_register(ARegionType *art, int space_type, int region_typ * \{ */ struct HudRegionData { - short regionid; + short regionid; }; static void hud_region_init(wmWindowManager *wm, ARegion *ar) { - ED_region_panels_init(wm, ar); - UI_region_handlers_add(&ar->handlers); - ar->flag |= RGN_FLAG_TEMP_REGIONDATA; + ED_region_panels_init(wm, ar); + UI_region_handlers_add(&ar->handlers); + ar->flag |= RGN_FLAG_TEMP_REGIONDATA; } static void hud_region_free(ARegion *ar) { - MEM_SAFE_FREE(ar->regiondata); + MEM_SAFE_FREE(ar->regiondata); } static void hud_region_layout(const bContext *C, ARegion *ar) { - bool ok = false; - - { - struct HudRegionData *hrd = ar->regiondata; - if (hrd != NULL) { - ScrArea *sa = CTX_wm_area(C); - ARegion *ar_op = (hrd->regionid != -1) ? BKE_area_find_region_type(sa, hrd->regionid) : NULL; - ARegion *ar_prev = CTX_wm_region(C); - CTX_wm_region_set((bContext *)C, ar_op); - ok = last_redo_poll(C); - CTX_wm_region_set((bContext *)C, ar_prev); - } - } - - if (!ok) { - ED_region_tag_redraw(ar); - hud_region_hide(ar); - return; - } - - int size_y = ar->sizey; - - ED_region_panels_layout(C, ar); - - if (ar->panels.first && (ar->sizey != size_y)) { - int winx_new = UI_DPI_FAC * (ar->sizex + 0.5f); - int winy_new = UI_DPI_FAC * (ar->sizey + 0.5f); - View2D *v2d = &ar->v2d; - - if (ar->flag & RGN_FLAG_SIZE_CLAMP_X) { - CLAMP_MAX(winx_new, ar->winx); - } - if (ar->flag & RGN_FLAG_SIZE_CLAMP_Y) { - CLAMP_MAX(winy_new, ar->winy); - } - - ar->winx = winx_new; - ar->winy = winy_new; - - ar->winrct.xmax = (ar->winrct.xmin + ar->winx) - 1; - ar->winrct.ymax = (ar->winrct.ymin + ar->winy) - 1; - - UI_view2d_region_reinit(v2d, V2D_COMMONVIEW_PANELS_UI, ar->winx, ar->winy); - - /* Weak, but needed to avoid glitches, especially with hi-dpi (where resizing the view glitches often). - * Fortunately this only happens occasionally. */ - ED_region_panels_layout(C, ar); - } - - /* restore view matrix */ - UI_view2d_view_restore(C); + bool ok = false; + + { + struct HudRegionData *hrd = ar->regiondata; + if (hrd != NULL) { + ScrArea *sa = CTX_wm_area(C); + ARegion *ar_op = (hrd->regionid != -1) ? BKE_area_find_region_type(sa, hrd->regionid) : NULL; + ARegion *ar_prev = CTX_wm_region(C); + CTX_wm_region_set((bContext *)C, ar_op); + ok = last_redo_poll(C); + CTX_wm_region_set((bContext *)C, ar_prev); + } + } + + if (!ok) { + ED_region_tag_redraw(ar); + hud_region_hide(ar); + return; + } + + int size_y = ar->sizey; + + ED_region_panels_layout(C, ar); + + if (ar->panels.first && (ar->sizey != size_y)) { + int winx_new = UI_DPI_FAC * (ar->sizex + 0.5f); + int winy_new = UI_DPI_FAC * (ar->sizey + 0.5f); + View2D *v2d = &ar->v2d; + + if (ar->flag & RGN_FLAG_SIZE_CLAMP_X) { + CLAMP_MAX(winx_new, ar->winx); + } + if (ar->flag & RGN_FLAG_SIZE_CLAMP_Y) { + CLAMP_MAX(winy_new, ar->winy); + } + + ar->winx = winx_new; + ar->winy = winy_new; + + ar->winrct.xmax = (ar->winrct.xmin + ar->winx) - 1; + ar->winrct.ymax = (ar->winrct.ymin + ar->winy) - 1; + + UI_view2d_region_reinit(v2d, V2D_COMMONVIEW_PANELS_UI, ar->winx, ar->winy); + + /* Weak, but needed to avoid glitches, especially with hi-dpi (where resizing the view glitches often). + * Fortunately this only happens occasionally. */ + ED_region_panels_layout(C, ar); + } + + /* restore view matrix */ + UI_view2d_view_restore(C); } static void hud_region_draw(const bContext *C, ARegion *ar) { - UI_view2d_view_ortho(&ar->v2d); - wmOrtho2_region_pixelspace(ar); - GPU_clear_color(0, 0, 0, 0.0f); - GPU_clear(GPU_COLOR_BIT); - - if ((ar->flag & RGN_FLAG_HIDDEN) == 0) { - ui_draw_menu_back(NULL, NULL, &(rcti){ .xmax = ar->winx, .ymax = ar->winy, }); - ED_region_panels_draw(C, ar); - } + UI_view2d_view_ortho(&ar->v2d); + wmOrtho2_region_pixelspace(ar); + GPU_clear_color(0, 0, 0, 0.0f); + GPU_clear(GPU_COLOR_BIT); + + if ((ar->flag & RGN_FLAG_HIDDEN) == 0) { + ui_draw_menu_back(NULL, + NULL, + &(rcti){ + .xmax = ar->winx, + .ymax = ar->winy, + }); + ED_region_panels_draw(C, ar); + } } ARegionType *ED_area_type_hud(int space_type) { - ARegionType *art = MEM_callocN(sizeof(ARegionType), __func__); - art->regionid = RGN_TYPE_HUD; - art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_VIEW2D; - art->layout = hud_region_layout; - art->draw = hud_region_draw; - art->init = hud_region_init; - art->free = hud_region_free; - - hud_panels_register(art, space_type, art->regionid); - - art->lock = 1; /* can become flag, see BKE_spacedata_draw_locks */ - return art; + ARegionType *art = MEM_callocN(sizeof(ARegionType), __func__); + art->regionid = RGN_TYPE_HUD; + art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_VIEW2D; + art->layout = hud_region_layout; + art->draw = hud_region_draw; + art->init = hud_region_init; + art->free = hud_region_free; + + hud_panels_register(art, space_type, art->regionid); + + art->lock = 1; /* can become flag, see BKE_spacedata_draw_locks */ + return art; } static ARegion *hud_region_add(ScrArea *sa) { - ARegion *ar = MEM_callocN(sizeof(ARegion), "area region"); - ARegion *ar_win = BKE_area_find_region_type(sa, RGN_TYPE_WINDOW); - if (ar_win) { - BLI_insertlinkbefore(&sa->regionbase, ar_win, ar); - } - else { - BLI_addtail(&sa->regionbase, ar); - } - ar->regiontype = RGN_TYPE_HUD; - ar->alignment = RGN_ALIGN_FLOAT; - ar->overlap = true; - ar->flag |= RGN_FLAG_DYNAMIC_SIZE; - - return ar; + ARegion *ar = MEM_callocN(sizeof(ARegion), "area region"); + ARegion *ar_win = BKE_area_find_region_type(sa, RGN_TYPE_WINDOW); + if (ar_win) { + BLI_insertlinkbefore(&sa->regionbase, ar_win, ar); + } + else { + BLI_addtail(&sa->regionbase, ar); + } + ar->regiontype = RGN_TYPE_HUD; + ar->alignment = RGN_ALIGN_FLOAT; + ar->overlap = true; + ar->flag |= RGN_FLAG_DYNAMIC_SIZE; + + return ar; } void ED_area_type_hud_clear(wmWindowManager *wm, ScrArea *sa_keep) { - for (wmWindow *win = wm->windows.first; win; win = win->next) { - bScreen *screen = WM_window_get_active_screen(win); - for (ScrArea *sa = screen->areabase.first; sa; sa = sa->next) { - if (sa != sa_keep) { - for (ARegion *ar = sa->regionbase.first; ar; ar = ar->next) { - if (ar->regiontype == RGN_TYPE_HUD) { - if ((ar->flag & RGN_FLAG_HIDDEN) == 0) { - hud_region_hide(ar); - ED_region_tag_redraw(ar); - ED_area_tag_redraw(sa); - } - } - } - } - } - } + for (wmWindow *win = wm->windows.first; win; win = win->next) { + bScreen *screen = WM_window_get_active_screen(win); + for (ScrArea *sa = screen->areabase.first; sa; sa = sa->next) { + if (sa != sa_keep) { + for (ARegion *ar = sa->regionbase.first; ar; ar = ar->next) { + if (ar->regiontype == RGN_TYPE_HUD) { + if ((ar->flag & RGN_FLAG_HIDDEN) == 0) { + hud_region_hide(ar); + ED_region_tag_redraw(ar); + ED_area_tag_redraw(sa); + } + } + } + } + } + } } void ED_area_type_hud_ensure(bContext *C, ScrArea *sa) { - wmWindowManager *wm = CTX_wm_manager(C); - ED_area_type_hud_clear(wm, sa); - - ARegionType *art = BKE_regiontype_from_id(sa->type, RGN_TYPE_HUD); - if (art == NULL) { - return; - } - - ARegion *ar = BKE_area_find_region_type(sa, RGN_TYPE_HUD); - bool init = false; - bool was_hidden = ar == NULL || ar->visible == false; - if (!last_redo_poll(C)) { - if (ar) { - ED_region_tag_redraw(ar); - hud_region_hide(ar); - } - return; - } - - if (ar == NULL) { - init = true; - ar = hud_region_add(sa); - ar->type = art; - } - - /* Let 'ED_area_update_region_sizes' do the work of placing the region. - * Otherwise we could set the 'ar->winrct' & 'ar->winx/winy' here. */ - if (init) { - sa->flag |= AREA_FLAG_REGION_SIZE_UPDATE; - } - else { - if (ar->flag & RGN_FLAG_HIDDEN) { - sa->flag |= AREA_FLAG_REGION_SIZE_UPDATE; - } - ar->flag &= ~RGN_FLAG_HIDDEN; - } - - { - ARegion *ar_op = CTX_wm_region(C); - BLI_assert((ar_op == NULL) || (ar_op->regiontype != RGN_TYPE_HUD)); - struct HudRegionData *hrd = ar->regiondata; - if (hrd == NULL) { - hrd = MEM_callocN(sizeof(*hrd), __func__); - ar->regiondata = hrd; - } - if (ar_op) { - hrd->regionid = ar_op->regiontype; - } - else { - hrd->regionid = -1; - } - } - - if (init) { - /* This is needed or 'winrct' will be invalid. */ - wmWindow *win = CTX_wm_window(C); - ED_area_update_region_sizes(wm, win, sa); - } - - ED_region_init(ar); - ED_region_tag_redraw(ar); - - /* Reset zoom level (not well supported). */ - ar->v2d.cur = ar->v2d.tot = (rctf){ .xmax = ar->winx, .ymax = ar->winy, }; - ar->v2d.minzoom = 1.0f; - ar->v2d.maxzoom = 1.0f; - - ar->visible = !(ar->flag & RGN_FLAG_HIDDEN); - - /* We shouldn't need to do this every time :S */ - /* XXX, this is evil! - it also makes the menu show on first draw. :( */ - if (ar->visible) { - ARegion *ar_prev = CTX_wm_region(C); - CTX_wm_region_set((bContext *)C, ar); - hud_region_layout(C, ar); - if (was_hidden) { - ar->winx = ar->v2d.winx; - ar->winy = ar->v2d.winy; - ar->v2d.cur = ar->v2d.tot = (rctf){ .xmax = ar->winx, .ymax = ar->winy, }; - } - CTX_wm_region_set((bContext *)C, ar_prev); - } - - ar->visible = !((ar->flag & RGN_FLAG_HIDDEN) || (ar->flag & RGN_FLAG_TOO_SMALL)); + wmWindowManager *wm = CTX_wm_manager(C); + ED_area_type_hud_clear(wm, sa); + + ARegionType *art = BKE_regiontype_from_id(sa->type, RGN_TYPE_HUD); + if (art == NULL) { + return; + } + + ARegion *ar = BKE_area_find_region_type(sa, RGN_TYPE_HUD); + bool init = false; + bool was_hidden = ar == NULL || ar->visible == false; + if (!last_redo_poll(C)) { + if (ar) { + ED_region_tag_redraw(ar); + hud_region_hide(ar); + } + return; + } + + if (ar == NULL) { + init = true; + ar = hud_region_add(sa); + ar->type = art; + } + + /* Let 'ED_area_update_region_sizes' do the work of placing the region. + * Otherwise we could set the 'ar->winrct' & 'ar->winx/winy' here. */ + if (init) { + sa->flag |= AREA_FLAG_REGION_SIZE_UPDATE; + } + else { + if (ar->flag & RGN_FLAG_HIDDEN) { + sa->flag |= AREA_FLAG_REGION_SIZE_UPDATE; + } + ar->flag &= ~RGN_FLAG_HIDDEN; + } + + { + ARegion *ar_op = CTX_wm_region(C); + BLI_assert((ar_op == NULL) || (ar_op->regiontype != RGN_TYPE_HUD)); + struct HudRegionData *hrd = ar->regiondata; + if (hrd == NULL) { + hrd = MEM_callocN(sizeof(*hrd), __func__); + ar->regiondata = hrd; + } + if (ar_op) { + hrd->regionid = ar_op->regiontype; + } + else { + hrd->regionid = -1; + } + } + + if (init) { + /* This is needed or 'winrct' will be invalid. */ + wmWindow *win = CTX_wm_window(C); + ED_area_update_region_sizes(wm, win, sa); + } + + ED_region_init(ar); + ED_region_tag_redraw(ar); + + /* Reset zoom level (not well supported). */ + ar->v2d.cur = ar->v2d.tot = (rctf){ + .xmax = ar->winx, + .ymax = ar->winy, + }; + ar->v2d.minzoom = 1.0f; + ar->v2d.maxzoom = 1.0f; + + ar->visible = !(ar->flag & RGN_FLAG_HIDDEN); + + /* We shouldn't need to do this every time :S */ + /* XXX, this is evil! - it also makes the menu show on first draw. :( */ + if (ar->visible) { + ARegion *ar_prev = CTX_wm_region(C); + CTX_wm_region_set((bContext *)C, ar); + hud_region_layout(C, ar); + if (was_hidden) { + ar->winx = ar->v2d.winx; + ar->winy = ar->v2d.winy; + ar->v2d.cur = ar->v2d.tot = (rctf){ + .xmax = ar->winx, + .ymax = ar->winy, + }; + } + CTX_wm_region_set((bContext *)C, ar_prev); + } + + ar->visible = !((ar->flag & RGN_FLAG_HIDDEN) || (ar->flag & RGN_FLAG_TOO_SMALL)); } /** \} */ |