Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/screen/area.c
| Show First 20 Lines • Show All 1,069 Lines • ▼ Show 20 Lines | if (ar1->overlap && (ar1->alignment & RGN_SPLIT_PREV) == 0) { | ||||
| ar->flag |= RGN_FLAG_TOO_SMALL; | ar->flag |= RGN_FLAG_TOO_SMALL; | ||||
| return; | return; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| /* overlapping regions only in the following restricted cases */ | /* overlapping regions only in the following restricted cases */ | ||||
| static bool region_is_overlap(wmWindow *win, ScrArea *sa, ARegion *ar) | static bool region_is_overlap(ScrArea *sa, ARegion *ar) | ||||
| { | { | ||||
| if (U.uiflag2 & USER_REGION_OVERLAP) { | if (U.uiflag2 & USER_REGION_OVERLAP) { | ||||
| if (WM_is_draw_triple(win)) { | |||||
| if (ELEM(sa->spacetype, SPACE_VIEW3D, SPACE_SEQ)) { | if (ELEM(sa->spacetype, SPACE_VIEW3D, SPACE_SEQ)) { | ||||
| if (ELEM(ar->regiontype, RGN_TYPE_TOOLS, RGN_TYPE_UI, RGN_TYPE_TOOL_PROPS)) | if (ELEM(ar->regiontype, RGN_TYPE_TOOLS, RGN_TYPE_UI, RGN_TYPE_TOOL_PROPS)) | ||||
| return 1; | return 1; | ||||
| } | } | ||||
| else if (sa->spacetype == SPACE_IMAGE) { | else if (sa->spacetype == SPACE_IMAGE) { | ||||
| if (ELEM(ar->regiontype, RGN_TYPE_TOOLS, RGN_TYPE_UI, RGN_TYPE_TOOL_PROPS, RGN_TYPE_PREVIEW)) | if (ELEM(ar->regiontype, RGN_TYPE_TOOLS, RGN_TYPE_UI, RGN_TYPE_TOOL_PROPS, RGN_TYPE_PREVIEW)) | ||||
| return 1; | return 1; | ||||
| } | } | ||||
| } | } | ||||
| } | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| static void region_rect_recursive(wmWindow *win, ScrArea *sa, ARegion *ar, rcti *remainder, int quad, bool add_azones) | static void region_rect_recursive(wmWindow *win, ScrArea *sa, ARegion *ar, rcti *remainder, int quad, bool add_azones) | ||||
| { | { | ||||
| rcti *remainder_prev = remainder; | rcti *remainder_prev = remainder; | ||||
| int prefsizex, prefsizey; | int prefsizex, prefsizey; | ||||
| int alignment; | int alignment; | ||||
| if (ar == NULL) | if (ar == NULL) | ||||
| return; | return; | ||||
| /* no returns in function, winrct gets set in the end again */ | /* no returns in function, winrct gets set in the end again */ | ||||
| BLI_rcti_init(&ar->winrct, 0, 0, 0, 0); | BLI_rcti_init(&ar->winrct, 0, 0, 0, 0); | ||||
| /* for test; allow split of previously defined region */ | /* for test; allow split of previously defined region */ | ||||
| if (ar->alignment & RGN_SPLIT_PREV) | if (ar->alignment & RGN_SPLIT_PREV) | ||||
| if (ar->prev) | if (ar->prev) | ||||
| remainder = &ar->prev->winrct; | remainder = &ar->prev->winrct; | ||||
| alignment = ar->alignment & ~RGN_SPLIT_PREV; | alignment = ar->alignment & ~RGN_SPLIT_PREV; | ||||
| /* set here, assuming userpref switching forces to call this again */ | /* set here, assuming userpref switching forces to call this again */ | ||||
| ar->overlap = region_is_overlap(win, sa, ar); | ar->overlap = region_is_overlap(sa, ar); | ||||
| /* clear state flags first */ | /* clear state flags first */ | ||||
| ar->flag &= ~RGN_FLAG_TOO_SMALL; | ar->flag &= ~RGN_FLAG_TOO_SMALL; | ||||
| /* user errors */ | /* user errors */ | ||||
| if (ar->next == NULL && alignment != RGN_ALIGN_QSPLIT) | if (ar->next == NULL && alignment != RGN_ALIGN_QSPLIT) | ||||
| alignment = RGN_ALIGN_NONE; | alignment = RGN_ALIGN_NONE; | ||||
| /* prefsize, for header we stick to exception (prevent dpi rounding error) */ | /* prefsize, for header we stick to exception (prevent dpi rounding error) */ | ||||
| ▲ Show 20 Lines • Show All 932 Lines • ▼ Show 20 Lines | else { | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| /* clear */ | /* clear */ | ||||
| if (ar->overlap) { | if (ar->overlap) { | ||||
| /* view should be in pixelspace */ | /* view should be in pixelspace */ | ||||
| UI_view2d_view_restore(C); | UI_view2d_view_restore(C); | ||||
| glEnable(GL_BLEND); | |||||
| Gwn_VertFormat *format = immVertexFormat(); | float back[4]; | ||||
| unsigned int pos = GWN_vertformat_attr_add(format, "pos", GWN_COMP_I32, 2, GWN_FETCH_INT_TO_FLOAT); | UI_GetThemeColor4fv((ar->type->regionid == RGN_TYPE_PREVIEW) ? TH_PREVIEW_BACK : TH_BACK, back); | ||||
| immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR); | glClearColor(back[3] * back[0], back[3] * back[1], back[3] * back[2], back[3]); | ||||
| immUniformThemeColor((ar->type->regionid == RGN_TYPE_PREVIEW) ? TH_PREVIEW_BACK : TH_BACK); | glClear(GL_COLOR_BUFFER_BIT); | ||||
| immRecti(pos, 0, 0, BLI_rcti_size_x(&ar->winrct), BLI_rcti_size_y(&ar->winrct) + 1); | |||||
| immUnbindProgram(); | |||||
| glDisable(GL_BLEND); | |||||
| } | } | ||||
| else { | else { | ||||
| UI_ThemeClearColor((ar->type->regionid == RGN_TYPE_PREVIEW) ? TH_PREVIEW_BACK : TH_BACK); | UI_ThemeClearColor((ar->type->regionid == RGN_TYPE_PREVIEW) ? TH_PREVIEW_BACK : TH_BACK); | ||||
| glClear(GL_COLOR_BUFFER_BIT); | glClear(GL_COLOR_BUFFER_BIT); | ||||
| } | } | ||||
| /* reset line width for drawing tabs */ | /* reset line width for drawing tabs */ | ||||
| glLineWidth(1.0f); | glLineWidth(1.0f); | ||||
| ▲ Show 20 Lines • Show All 192 Lines • ▼ Show 20 Lines | else { | ||||
| } | } | ||||
| } | } | ||||
| rect.ymin = BLI_rcti_size_y(&ar->winrct) - header_height * num_lines; | rect.ymin = BLI_rcti_size_y(&ar->winrct) - header_height * num_lines; | ||||
| rect.ymax = BLI_rcti_size_y(&ar->winrct); | rect.ymax = BLI_rcti_size_y(&ar->winrct); | ||||
| /* setup scissor */ | /* setup scissor */ | ||||
| glGetIntegerv(GL_SCISSOR_BOX, scissor); | glGetIntegerv(GL_SCISSOR_BOX, scissor); | ||||
| glScissor(ar->winrct.xmin + rect.xmin, ar->winrct.ymin + rect.ymin, | glScissor(rect.xmin, rect.ymin, | ||||
| BLI_rcti_size_x(&rect) + 1, BLI_rcti_size_y(&rect) + 1); | BLI_rcti_size_x(&rect) + 1, BLI_rcti_size_y(&rect) + 1); | ||||
| glEnable(GL_BLEND); | glEnable(GL_BLEND); | ||||
| glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA); | glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA); | ||||
| Gwn_VertFormat *format = immVertexFormat(); | Gwn_VertFormat *format = immVertexFormat(); | ||||
| unsigned int pos = GWN_vertformat_attr_add(format, "pos", GWN_COMP_I32, 2, GWN_FETCH_INT_TO_FLOAT); | unsigned int pos = GWN_vertformat_attr_add(format, "pos", GWN_COMP_I32, 2, GWN_FETCH_INT_TO_FLOAT); | ||||
| immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR); | immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR); | ||||
| immUniformColor4fv(fill_color); | immUniformColor4fv(fill_color); | ||||
| ▲ Show 20 Lines • Show All 487 Lines • Show Last 20 Lines | |||||