Commit: e1e97bbb98e615b0dff3d45999be70897c8ff53d
Author: Dalai Felinto
Date:   Thu Oct 13 23:28:11 2016 +0000
Branches: blender2.8
https://developer.blender.org/rBe1e97bbb98e615b0dff3d45999be70897c8ff53d

Immediate mode: use new util functions, and border draw functions

Part of T49043

Reviewers: merwin

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

M       source/blender/editors/include/UI_interface.h
M       source/blender/editors/interface/interface_draw.c
M       source/blender/editors/space_sequencer/sequencer_draw.c
M       source/blender/editors/space_view3d/view3d_draw_legacy.c

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

diff --git a/source/blender/editors/include/UI_interface.h 
b/source/blender/editors/include/UI_interface.h
index 143d13e..a1289e4 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -321,7 +321,7 @@ void UI_draw_roundbox_shade_y(int mode, float minx, float 
miny, float maxx, floa
 void UI_draw_text_underline(int pos_x, int pos_y, int len, int height);
 
 void UI_draw_safe_areas(
-        float x1, float x2, float y1, float y2,
+        unsigned pos, float x1, float x2, float y1, float y2,
         const float title_aspect[2], const float action_aspect[2]);
 
 /* state for scrolldrawing */
diff --git a/source/blender/editors/interface/interface_draw.c 
b/source/blender/editors/interface/interface_draw.c
index 365d309..c2c16d3 100644
--- a/source/blender/editors/interface/interface_draw.c
+++ b/source/blender/editors/interface/interface_draw.c
@@ -481,10 +481,11 @@ void ui_draw_but_IMAGE(ARegion *UNUSED(ar), uiBut *but, 
uiWidgetColors *UNUSED(w
 /**
  * Draw title and text safe areas.
  *
- * The first 4 parameters are the offsets for the view, not the zones.
+ * The first parameter is a GL_FLOAT, 2, KEEP_FLOAT vertex attrib
+ * The next 4 parameters are the offsets for the view, not the zones.
  */
 void UI_draw_safe_areas(
-        float x1, float x2, float y1, float y2,
+        unsigned pos, float x1, float x2, float y1, float y2,
         const float title_aspect[2], const float action_aspect[2])
 {
        const float size_x_half = (x2 - x1) * 0.5f;
@@ -512,12 +513,7 @@ void UI_draw_safe_areas(
                        maxx = x2 - margin_x;
                        maxy = y2 - margin_y;
 
-                       glBegin(GL_LINE_LOOP);
-                       glVertex2f(maxx, miny);
-                       glVertex2f(maxx, maxy);
-                       glVertex2f(minx, maxy);
-                       glVertex2f(minx, miny);
-                       glEnd();
+                       imm_draw_line_box(pos, minx, miny, maxx, maxy);
                }
        }
 }
diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c 
b/source/blender/editors/space_sequencer/sequencer_draw.c
index e1768e4..d7771d0 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -59,6 +59,7 @@
 #include "BIF_glutil.h"
 
 #include "GPU_basic_shader.h"
+#include "GPU_immediate.h"
 
 #include "ED_anim_api.h"
 #include "ED_gpencil.h"
@@ -1048,30 +1049,31 @@ static void sequencer_draw_borders(const SpaceSeq 
*sseq, const View2D *v2d, cons
        /* border */
        setlinestyle(3);
 
-       UI_ThemeColorBlendShade(TH_WIRE, TH_BACK, 1.0, 0);
+       VertexFormat *format = immVertexFormat();
+       unsigned pos = add_attrib(format, "pos", GL_FLOAT, 2, KEEP_FLOAT);
 
-       glBegin(GL_LINE_LOOP);
-       glVertex2f(x1 - 0.5f, y1 - 0.5f);
-       glVertex2f(x1 - 0.5f, y2 + 0.5f);
-       glVertex2f(x2 + 0.5f, y2 + 0.5f);
-       glVertex2f(x2 + 0.5f, y1 - 0.5f);
-       glEnd();
+       immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
+       immUniformThemeColor(TH_BACK);
+
+       imm_draw_line_box(pos, x1 - 0.5f, y1 - 0.5f, x2 + 0.5f, y2 + 0.5f);
 
        /* safety border */
        if (sseq->flag & SEQ_SHOW_SAFE_MARGINS) {
                UI_draw_safe_areas(
-                       x1, x2, y1, y2,
+                       pos, x1, x2, y1, y2,
                        scene->safe_areas.title,
                        scene->safe_areas.action);
 
                if (sseq->flag & SEQ_SHOW_SAFE_CENTER) {
                        UI_draw_safe_areas(
-                               x1, x2, y1, y2,
+                               pos, x1, x2, y1, y2,
                                scene->safe_areas.title_center,
                                scene->safe_areas.action_center);
                }
        }
 
+       immUnbindProgram();
+
        setlinestyle(0);
 }
 
diff --git a/source/blender/editors/space_view3d/view3d_draw_legacy.c 
b/source/blender/editors/space_view3d/view3d_draw_legacy.c
index bdc0775..4d9e414 100644
--- a/source/blender/editors/space_view3d/view3d_draw_legacy.c
+++ b/source/blender/editors/space_view3d/view3d_draw_legacy.c
@@ -725,7 +725,7 @@ void ED_view3d_calc_camera_border(
        view3d_camera_border(scene, ar, v3d, rv3d, r_viewborder, no_shift, 
false);
 }
 
-static void drawviewborder_grid3(float x1, float x2, float y1, float y2, float 
fac)
+static void drawviewborder_grid3(unsigned pos, float x1, float x2, float y1, 
float y2, float fac)
 {
        float x3, y3, x4, y4;
 
@@ -734,29 +734,29 @@ static void drawviewborder_grid3(float x1, float x2, 
float y1, float y2, float f
        x4 = x1 + (1.0f - fac) * (x2 - x1);
        y4 = y1 + (1.0f - fac) * (y2 - y1);
 
-       glBegin(GL_LINES);
-       glVertex2f(x1, y3);
-       glVertex2f(x2, y3);
+       immBegin(GL_LINES, 8);
+       immVertex2f(pos, x1, y3);
+       immVertex2f(pos, x2, y3);
 
-       glVertex2f(x1, y4);
-       glVertex2f(x2, y4);
+       immVertex2f(pos, x1, y4);
+       immVertex2f(pos, x2, y4);
 
-       glVertex2f(x3, y1);
-       glVertex2f(x3, y2);
+       immVertex2f(pos, x3, y1);
+       immVertex2f(pos, x3, y2);
 
-       glVertex2f(x4, y1);
-       glVertex2f(x4, y2);
-       glEnd();
+       immVertex2f(pos, x4, y1);
+       immVertex2f(pos, x4, y2);
+       immEnd();
 }
 
 /* harmonious triangle */
-static void drawviewborder_triangle(float x1, float x2, float y1, float y2, 
const char golden, const char dir)
+static void drawviewborder_triangle(unsigned pos, float x1, float x2, float 
y1, float y2, const char golden, const char dir)
 {
        float ofs;
        float w = x2 - x1;
        float h = y2 - y1;
 
-       glBegin(GL_LINES);
+       immBegin(GL_LINES, 6);
        if (w > h) {
                if (golden) {
                        ofs = w * (1.0f - (1.0f / 1.61803399f));
@@ -766,14 +766,14 @@ static void drawviewborder_triangle(float x1, float x2, 
float y1, float y2, cons
                }
                if (dir == 'B') SWAP(float, y1, y2);
 
-               glVertex2f(x1, y1);
-               glVertex2f(x2, y2);
+               immVertex2f(pos, x1, y1);
+               immVertex2f(pos, x2, y2);
 
-               glVertex2f(x2, y1);
-               glVertex2f(x1 + (w - ofs), y2);
+               immVertex2f(pos, x2, y1);
+               immVertex2f(pos, x1 + (w - ofs), y2);
 
-               glVertex2f(x1, y2);
-               glVertex2f(x1 + ofs, y1);
+               immVertex2f(pos, x1, y2);
+               immVertex2f(pos, x1 + ofs, y1);
        }
        else {
                if (golden) {
@@ -784,16 +784,16 @@ static void drawviewborder_triangle(float x1, float x2, 
float y1, float y2, cons
                }
                if (dir == 'B') SWAP(float, x1, x2);
 
-               glVertex2f(x1, y1);
-               glVertex2f(x2, y2);
+               immVertex2f(pos, x1, y1);
+               immVertex2f(pos, x2, y2);
 
-               glVertex2f(x2, y1);
-               glVertex2f(x1, y1 + ofs);
+               immVertex2f(pos, x2, y1);
+               immVertex2f(pos, x1, y1 + ofs);
 
-               glVertex2f(x1, y2);
-               glVertex2f(x2, y1 + (h - ofs));
+               immVertex2f(pos, x1, y2);
+               immVertex2f(pos, x2, y1 + (h - ofs));
        }
-       glEnd();
+       immEnd();
 }
 
 static void drawviewborder(Scene *scene, ARegion *ar, View3D *v3d)
@@ -830,43 +830,49 @@ static void drawviewborder(Scene *scene, ARegion *ar, 
View3D *v3d)
        y1i = (int)(y1 - 1.0001f);
        x2i = (int)(x2 + (1.0f - 0.0001f));
        y2i = (int)(y2 + (1.0f - 0.0001f));
-       
+
+       /* use the same program for everything */
+       VertexFormat *format = immVertexFormat();
+       unsigned pos = add_attrib(format, "pos", GL_FLOAT, 2, KEEP_FLOAT);
+
+       immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
+
        /* passepartout, specified in camera edit buttons */
        if (ca && (ca->flag & CAM_SHOWPASSEPARTOUT) && ca->passepartalpha > 
0.000001f) {
                const float winx = (ar->winx + 1);
                const float winy = (ar->winy + 1);
 
-               if (ca->passepartalpha == 1.0f) {
-                       glColor3f(0, 0, 0);
-               }
-               else {
+               float alpha = 1.0f;
+
+               if (ca->passepartalpha != 1.0f) {
                        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
                        glEnable(GL_BLEND);
-                       glColor4f(0, 0, 0, ca->passepartalpha);
+                       alpha = ca->passepartalpha;
                }
 
+               immUniformColor4f(0.0f, 0.0f, 0.0f, alpha);
+
                if (x1i > 0.0f)
-                       glRectf(0.0, winy, x1i, 0.0);
+                       immRectf(pos, 0.0f, winy, x1i, 0.0f);
                if (x2i < winx)
-                       glRectf(x2i, winy, winx, 0.0);
+                       immRectf(pos, x2i, winy, winx, 0.0f);
                if (y2i < winy)
-                       glRectf(x1i, winy, x2i, y2i);
+                       immRectf(pos, x1i, winy, x2i, y2i);
                if (y2i > 0.0f)
-                       glRectf(x1i, y1i, x2i, 0.0);
-               
+                       immRectf(pos, x1i, y1i, x2i, 0.0f);
+
                glDisable(GL_BLEND);
        }
 
        setlinestyle(0);
 
-       UI_ThemeColor(TH_BACK);
-               
-       fdrawbox(x1i, y1i, x2i, y2i);
+       immUniformThemeColor(TH_BACK);
+       imm_draw_line_box(pos, x1i, y1i, x2i, y2i);
 
 #ifdef VIEW3D_CAMERA_BORDER_HACK
        if (view3d_camera_border_hack_test == true) {
-               glColor3ubv(view3d_camera_border_hack_col);
-               fdrawbox(x1i + 1, y1i + 1, x2i - 1, y2i - 1);
+               immUniformColor3ubv(view3d_camera_border_hack_col);
+               imm_draw_line_box(pos, x1i + 1, y1i + 1, x2i - 1, y2i - 1);
                view3d_camera_border_hack_test = false;
        }
 #endif
@@ -875,12 +881,12 @@ static void drawviewborder(Scene *scene, ARegion *ar, 
View3D *v3d)
 
        /* outer line not to confuse with object selecton */
        if (v3d->flag2 & V3D_LOCK_CAMERA) {
-               UI_ThemeColor(TH_REDALERT);
-               fdrawbox(x1i - 1, y1i - 1, x2i + 1, y2i + 1);
+               immUniformThemeColor(TH_REDALERT);
+               imm_draw_line_box(pos, x1i - 1, y1i - 1, x2i + 1, y2i + 1);
        }
 
-       UI_ThemeColor(TH_VIEW_OVERLAY);
-       fdrawbox(x1i, y1i, x2i, y2i);
+       immUniformThemeColor(TH_VIEW_OVERLAY);
+       imm_draw_line_box(pos, x1i, y1i, x2i, y2i);
 
        /* border */
        if (scene->r.mode & R_BORDER) {
@@ -891,8 +897,8 @@ static void drawviewborder(Scene *scene, ARegion *ar, 
View3D *v3d)
                x4 = floorf(x1 + (scene->r.border.xmax * (x2 - x1))) + 
(U.pixelsize - 1);
                y4 = floorf(y1 + (scene->r.border.ymax * (y2 - y1))) + 
(U.pixelsize - 1);
 
-               cpack(0x4040FF);
-               sdrawbox(x3,  y3,  x4,  y4);
+               imm_cpack(0x4040FF);
+               imm_draw_line_box(pos, x3, y3, x4, y4);
        }
 
        /* safety border */
@@ -903,10 +909,6 @@ static void drawviewborder(Scene *scene, ARegion *ar, 
View3D *v3d)
                        x3 = x1 + 0.5f * (x2 - x1);
                        y3 = y1 + 0.5f * (y2 - y1);
 
-                       VertexFormat *format = immVertexFormat();
-                       unsigned pos = add_attrib(format, "pos", GL_FLOAT, 2, 
KEEP_FLOAT);
-
-                       immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
                        immUniformThemeColorBlendShade(TH_VIEW_OVERLAY, 
TH_BACK, 0.25f, 0);
                        immBegin(GL_LINES, 4);
 
@@ -917,15 +919,10 @@ static void drawviewborder(Scene *scene, ARegion *ar, 
View3D *v3d)
                        immVertex2f(pos, x3, y2);
 
                        immEnd();
-                       immUnbindProgram();
                }
 
                if (ca->dtx & CAM_DTX_CENTER_DIAG) {
 
-                       VertexFormat *format = immVertexFormat();
-                       unsigned pos = add_attrib(format, "pos", GL_FLOAT, 2, 
KEEP_FLOAT);
-
-                       immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
                        immUniformThemeColorBlendShade(TH_VIEW_OVERLAY, 
TH_BACK, 0.25f, 0);
                        immBegin(GL_LINES, 4);
 
@@ -936,48 +933,47 @@ static void drawviewborder(Scene *scene, ARegion *ar, 
View3D *v3d)
                        immVertex2f(pos, x2, y1);
 
                        immEnd();
-                       

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to