Commit: 964a2dd73f687cbc293434eb3cbaa1b45ede20c5
Author: Dalai Felinto
Date:   Fri Apr 27 16:50:19 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB964a2dd73f687cbc293434eb3cbaa1b45ede20c5

UI: Bring Embossing for the top-bar and quad-view

Note: Quad-View region overlay drawing is not working because of e01cadd657c7.
However I tested this patch after reverting that commit locally and this
patch's code seems fine.

Partial revert of 3d62230ed673.

===================================================================

M       source/blender/editors/screen/area.c

===================================================================

diff --git a/source/blender/editors/screen/area.c 
b/source/blender/editors/screen/area.c
index a17f7ec6255..2accf7c9715 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -85,6 +85,61 @@ enum RegionEmbossSide {
 
 /* general area and region code */
 
+static void region_draw_emboss(const ARegion *ar, const rcti *scirct, int 
sides)
+{
+       rcti rect;
+
+       /* translate scissor rect to region space */
+       rect.xmin = scirct->xmin - ar->winrct.xmin;
+       rect.ymin = scirct->ymin - ar->winrct.ymin;
+       rect.xmax = scirct->xmax - ar->winrct.xmin;
+       rect.ymax = scirct->ymax - ar->winrct.ymin;
+
+       /* set transp line */
+       glEnable(GL_BLEND);
+       glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, 
GL_ONE_MINUS_SRC_ALPHA);
+
+       float color[4] = {0.0f, 0.0f, 0.0f, 0.25f};
+       UI_GetThemeColor3fv(TH_EDITOR_OUTLINE, color);
+
+       Gwn_VertFormat *format = immVertexFormat();
+       unsigned int pos = GWN_vertformat_attr_add(format, "pos", GWN_COMP_F32, 
2, GWN_FETCH_FLOAT);
+       immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
+       immUniformColor4fv(color);
+
+       immBeginAtMost(GWN_PRIM_LINES, 8);
+
+       /* right */
+       if (sides & REGION_EMBOSS_RIGHT) {
+               immVertex2f(pos, rect.xmax, rect.ymax);
+               immVertex2f(pos, rect.xmax, rect.ymin);
+       }
+
+       /* bottom */
+       if (sides & REGION_EMBOSS_BOTTOM) {
+               immVertex2f(pos, rect.xmax, rect.ymin);
+               immVertex2f(pos, rect.xmin, rect.ymin);
+       }
+
+       /* left */
+       if (sides & REGION_EMBOSS_LEFT) {
+               immVertex2f(pos, rect.xmin, rect.ymin);
+               immVertex2f(pos, rect.xmin, rect.ymax);
+       }
+
+       /* top */
+       if (sides & REGION_EMBOSS_TOP) {
+               immVertex2f(pos, rect.xmin, rect.ymax);
+               immVertex2f(pos, rect.xmax, rect.ymax);
+       }
+
+       immEnd();
+       immUnbindProgram();
+
+       glDisable(GL_BLEND);
+       glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+}
+
 void ED_region_pixelspace(ARegion *ar)
 {
        wmOrtho2_region_pixelspace(ar);
@@ -501,6 +556,18 @@ void ED_region_do_draw(bContext *C, ARegion *ar)
        
        UI_blocklist_free_inactive(C, &ar->uiblocks);
 
+       if (sa) {
+               const bScreen *screen = WM_window_get_active_screen(win);
+
+               /* Only draw region emboss for top-bar and quad-view. */
+               if ((screen->state != SCREENFULL) && ED_area_is_global(sa)) {
+                       region_draw_emboss(ar, &ar->winrct, (REGION_EMBOSS_LEFT 
| REGION_EMBOSS_RIGHT));
+               }
+               else if ((ar->regiontype == RGN_TYPE_WINDOW) && (ar->alignment 
== RGN_ALIGN_QSPLIT)) {
+                       region_draw_emboss(ar, &ar->winrct, REGION_EMBOSS_ALL);
+               }
+       }
+
        /* We may want to detach message-subscriptions from drawing. */
        {
                WorkSpace *workspace = CTX_wm_workspace(C);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to