Commit: 6c95e97e64fa9f4490ade0866412482766da002a
Author: Mike Erwin
Date:   Wed Feb 1 22:42:50 2017 -0500
Branches: blender2.8
https://developer.blender.org/rB6c95e97e64fa9f4490ade0866412482766da002a

OpenGL: convert clip_dopesheet_draw to new imm mode

D2486 by @TCMBoby, part of T49043

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

M       source/blender/editors/space_clip/clip_dopesheet_draw.c

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

diff --git a/source/blender/editors/space_clip/clip_dopesheet_draw.c 
b/source/blender/editors/space_clip/clip_dopesheet_draw.c
index 4bf4c1e7ba..19007702f9 100644
--- a/source/blender/editors/space_clip/clip_dopesheet_draw.c
+++ b/source/blender/editors/space_clip/clip_dopesheet_draw.c
@@ -54,6 +54,8 @@
 
 #include "RNA_access.h"
 
+#include "GPU_immediate.h"
+
 #include "clip_intern.h"  /* own include */
 
 static void track_channel_color(MovieTrackingTrack *track, float 
default_color[3], float color[3])
@@ -84,32 +86,9 @@ static void draw_keyframe_shape(float x, float y, float 
xscale, float yscale, bo
        static GLuint displist1 = 0;
        static GLuint displist2 = 0;
        int hsize = STRIP_HEIGHT_HALF;
-
-       /* initialize 2 display lists for diamond shape - one empty, one filled 
*/
-       if (displist1 == 0) {
-               displist1 = glGenLists(1);
-               glNewList(displist1, GL_COMPILE);
-
-               glBegin(GL_LINE_LOOP);
-               glVertex2fv(_unit_diamond_shape[0]);
-               glVertex2fv(_unit_diamond_shape[1]);
-               glVertex2fv(_unit_diamond_shape[2]);
-               glVertex2fv(_unit_diamond_shape[3]);
-               glEnd();
-               glEndList();
-       }
-       if (displist2 == 0) {
-               displist2 = glGenLists(1);
-               glNewList(displist2, GL_COMPILE);
-
-               glBegin(GL_QUADS);
-               glVertex2fv(_unit_diamond_shape[0]);
-               glVertex2fv(_unit_diamond_shape[1]);
-               glVertex2fv(_unit_diamond_shape[2]);
-               glVertex2fv(_unit_diamond_shape[3]);
-               glEnd();
-               glEndList();
-       }
+       
+       VertexFormat *format = immVertexFormat();
+       unsigned pos = add_attrib(format, "pos", GL_FLOAT, 2, KEEP_FLOAT);
 
        glPushMatrix();
 
@@ -120,16 +99,29 @@ static void draw_keyframe_shape(float x, float y, float 
xscale, float yscale, bo
        /* anti-aliased lines for more consistent appearance */
        glEnable(GL_LINE_SMOOTH);
 
+       immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
+       /* interior */
        if (sel)
-               UI_ThemeColorShadeAlpha(TH_STRIP_SELECT, 50, -255 * (1.0f - 
alpha));
+               immUniformThemeColorShadeAlpha(TH_STRIP_SELECT, 50, -255 * 
(1.0f - alpha));
        else
-               glColor4f(0.91f, 0.91f, 0.91f, alpha);
+               immUniformColor4f(0.91f, 0.91f, 0.91f, alpha);
 
-       glCallList(displist2);
+       immBegin(GL_QUADS, 4);
+       immVertex2fv(pos, _unit_diamond_shape[0]);
+       immVertex2fv(pos, _unit_diamond_shape[1]);
+       immVertex2fv(pos, _unit_diamond_shape[2]);
+       immVertex2fv(pos, _unit_diamond_shape[3]);
+       immEnd();
 
        /* exterior - black frame */
-       glColor4f(0.0f, 0.0f, 0.0f, alpha);
-       glCallList(displist1);
+       immUniformColor4f(0.0f, 0.0f, 0.0f, alpha);
+       immBegin(GL_LINE_LOOP, 4);
+       immVertex2fv(pos, _unit_diamond_shape[0]);
+       immVertex2fv(pos, _unit_diamond_shape[1]);
+       immVertex2fv(pos, _unit_diamond_shape[2]);
+       immVertex2fv(pos, _unit_diamond_shape[3]);
+       immEnd();
+       immUnbindProgram();
 
        glDisable(GL_LINE_SMOOTH);
 
@@ -143,7 +135,11 @@ static void clip_draw_dopesheet_background(ARegion *ar, 
MovieClip *clip)
        MovieTracking *tracking = &clip->tracking;
        MovieTrackingDopesheet *dopesheet = &tracking->dopesheet;
        MovieTrackingDopesheetCoverageSegment *coverage_segment;
+       
+       VertexFormat *format = immVertexFormat();
+       unsigned pos = add_attrib(format, "pos", GL_FLOAT, 2, KEEP_FLOAT);
 
+       immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
        for (coverage_segment = dopesheet->coverage_segments.first;
             coverage_segment;
             coverage_segment = coverage_segment->next)
@@ -153,14 +149,15 @@ static void clip_draw_dopesheet_background(ARegion *ar, 
MovieClip *clip)
                        int end_frame = 
BKE_movieclip_remap_clip_to_scene_frame(clip, coverage_segment->end_frame);
 
                        if (coverage_segment->coverage == 
TRACKING_COVERAGE_BAD) {
-                               glColor4f(1.0f, 0.0f, 0.0f, 0.07f);
+                               immUniformColor4f(1.0f, 0.0f, 0.0f, 0.07f);
                        }
                        else
-                               glColor4f(1.0f, 1.0f, 0.0f, 0.07f);
+                               immUniformColor4f(1.0f, 1.0f, 0.0f, 0.07f);
 
-                       glRectf(start_frame, v2d->cur.ymin, end_frame, 
v2d->cur.ymax);
+                       immRectf(pos, start_frame, v2d->cur.ymin, end_frame, 
v2d->cur.ymax);
                }
        }
+       immUnbindProgram();
 }
 
 void clip_draw_dopesheet_main(SpaceClip *sc, ARegion *ar, Scene *scene)
@@ -178,6 +175,9 @@ void clip_draw_dopesheet_main(SpaceClip *sc, ARegion *ar, 
Scene *scene)
                float y, xscale, yscale;
                float strip[4], selected_strip[4];
                float height = (dopesheet->tot_channel * CHANNEL_STEP) + 
(CHANNEL_HEIGHT);
+               
+               VertexFormat *format = immVertexFormat();
+               unsigned pos = add_attrib(format, "pos", GL_FLOAT, 2, 
KEEP_FLOAT);
 
                /* don't use totrect set, as the width stays the same
                 * (NOTE: this is ok here, the configuration is pretty 
straightforward)
@@ -218,10 +218,12 @@ void clip_draw_dopesheet_main(SpaceClip *sc, ARegion *ar, 
Scene *scene)
                                        float default_color[4] = {0.8f, 0.93f, 
0.8f, 0.3f};
 
                                        track_channel_color(track, 
default_color, color);
-                                       glColor4fv(color);
+                                       
immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
+                                       immUniformColor4fv(color);
 
-                                       glRectf(v2d->cur.xmin, (float) y - 
CHANNEL_HEIGHT_HALF,
+                                       immRectf(pos, v2d->cur.xmin, (float) y 
- CHANNEL_HEIGHT_HALF,
                                                v2d->cur.xmax + 
EXTRA_SCROLL_PAD, (float) y + CHANNEL_HEIGHT_HALF);
+                                       immUnbindProgram();
                                }
 
                                alpha = (track->flag & TRACK_LOCKED) ? 0.5f : 
1.0f;
@@ -231,18 +233,21 @@ void clip_draw_dopesheet_main(SpaceClip *sc, ARegion *ar, 
Scene *scene)
                                        int start_frame = 
BKE_movieclip_remap_clip_to_scene_frame(clip, channel->segments[2 * i]);
                                        int end_frame = 
BKE_movieclip_remap_clip_to_scene_frame(clip, channel->segments[2 * i + 1]);
 
+                                       
immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
                                        if (sel)
-                                               glColor4fv(selected_strip);
+                                               
immUniformColor4fv(selected_strip);
                                        else
-                                               glColor4fv(strip);
+                                               immUniformColor4fv(strip);
 
                                        if (start_frame != end_frame) {
-                                               glRectf(start_frame, (float) y 
- STRIP_HEIGHT_HALF,
+                                               immRectf(pos, start_frame, 
(float) y - STRIP_HEIGHT_HALF,
                                                        end_frame, (float) y + 
STRIP_HEIGHT_HALF);
+                                               immUnbindProgram();
                                                
draw_keyframe_shape(start_frame, y, xscale, yscale, sel, alpha);
                                                draw_keyframe_shape(end_frame, 
y, xscale, yscale, sel, alpha);
                                        }
                                        else {
+                                               immUnbindProgram();
                                                
draw_keyframe_shape(start_frame, y, xscale, yscale, sel, alpha);
                                        }
                                }
@@ -288,6 +293,9 @@ void clip_draw_dopesheet_channels(const bContext *C, 
ARegion *ar)
        int height;
        float y;
        PropertyRNA *chan_prop_lock;
+       
+       VertexFormat *format = immVertexFormat();
+       unsigned pos = add_attrib(format, "pos", GL_FLOAT, 2, KEEP_FLOAT);
 
        if (!clip)
                return;
@@ -326,15 +334,14 @@ void clip_draw_dopesheet_channels(const bContext *C, 
ARegion *ar)
                        bool sel = (track->flag & TRACK_DOPE_SEL) != 0;
 
                        track_channel_color(track, NULL, color);
-                       glColor3fv(color);
+                       immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
+                       immUniformColor3fv(color);
 
-                       glRectf(v2d->cur.xmin, (float) y - CHANNEL_HEIGHT_HALF,
+                       immRectf(pos, v2d->cur.xmin, (float) y - 
CHANNEL_HEIGHT_HALF,
                                v2d->cur.xmax + EXTRA_SCROLL_PAD, (float) y + 
CHANNEL_HEIGHT_HALF);
+                       immUnbindProgram();
 
-                       if (sel)
-                               UI_ThemeColor(TH_TEXT_HI);
-                       else
-                               UI_ThemeColor(TH_TEXT);
+                       UI_ThemeColor(sel ? TH_TEXT_HI : TH_TEXT);
 
                        font_height = BLF_height(fontid, channel->name, 
sizeof(channel->name));
                        BLF_position(fontid, v2d->cur.xmin + CHANNEL_PAD,

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

Reply via email to