fix [#27965] VSE: no visual feedback on locked strips
authorCampbell Barton <ideasman42@gmail.com>
Wed, 3 Aug 2011 09:28:16 +0000 (09:28 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 3 Aug 2011 09:28:16 +0000 (09:28 +0000)
added xpm -> opengl stipple conversion script.

source/blender/editors/include/BIF_glutil.h
source/blender/editors/screen/glutil.c
source/blender/editors/space_sequencer/sequencer_draw.c

index c9615204607af31c01acbbb18d6b9b351576469c..27bd31c20ff9391ee58a8134f6562116fba0103b 100644 (file)
@@ -52,6 +52,8 @@ void fdrawXORcirc(float xofs, float yofs, float rad);
 /* glStipple defines */
 extern unsigned char stipple_halftone[128];
 extern unsigned char stipple_quarttone[128];
+extern unsigned char stipple_diag_stripes_pos[128];
+extern unsigned char stipple_diag_stripes_neg[128];
 
        /**
         * Draw a lined (non-looping) arc with the given
index 2918c98c84a9aaadfcd428fd6b27fcb57fb8bbee..f56ae17d3664963132932f6b4f04325525396a64 100644 (file)
@@ -92,6 +92,44 @@ GLubyte stipple_quarttone[128] = {
        136,136,136,136,0,0,0,0,34,34,34,34,0,0,0,0};
 
 
+GLubyte stipple_diag_stripes_pos[128] = {
+    0x00, 0xff, 0x00, 0xff, 0x01, 0xfe, 0x01, 0xfe,
+       0x03, 0xfc, 0x03, 0xfc, 0x07, 0xf8, 0x07, 0xf8,
+       0x0f, 0xf0, 0x0f, 0xf0, 0x1f, 0xe0, 0x1f, 0xe0,
+       0x3f, 0xc0, 0x3f, 0xc0, 0x7f, 0x80, 0x7f, 0x80,
+       0xff, 0x00, 0xff, 0x00, 0xfe, 0x01, 0xfe, 0x01,
+       0xfc, 0x03, 0xfc, 0x03, 0xf8, 0x07, 0xf8, 0x07,
+       0xf0, 0x0f, 0xf0, 0x0f, 0xe0, 0x1f, 0xe0, 0x1f,
+       0xc0, 0x3f, 0xc0, 0x3f, 0x80, 0x7f, 0x80, 0x7f,
+       0x00, 0xff, 0x00, 0xff, 0x01, 0xfe, 0x01, 0xfe,
+       0x03, 0xfc, 0x03, 0xfc, 0x07, 0xf8, 0x07, 0xf8,
+       0x0f, 0xf0, 0x0f, 0xf0, 0x1f, 0xe0, 0x1f, 0xe0,
+       0x3f, 0xc0, 0x3f, 0xc0, 0x7f, 0x80, 0x7f, 0x80,
+       0xff, 0x00, 0xff, 0x00, 0xfe, 0x01, 0xfe, 0x01,
+       0xfc, 0x03, 0xfc, 0x03, 0xf8, 0x07, 0xf8, 0x07,
+       0xf0, 0x0f, 0xf0, 0x0f, 0xe0, 0x1f, 0xe0, 0x1f,
+       0xc0, 0x3f, 0xc0, 0x3f, 0x80, 0x7f, 0x80, 0x7f};
+
+
+GLubyte stipple_diag_stripes_neg[128] = {
+    0xff, 0x00, 0xff, 0x00, 0xfe, 0x01, 0xfe, 0x01,
+       0xfc, 0x03, 0xfc, 0x03, 0xf8, 0x07, 0xf8, 0x07,
+       0xf0, 0x0f, 0xf0, 0x0f, 0xe0, 0x1f, 0xe0, 0x1f,
+       0xc0, 0x3f, 0xc0, 0x3f, 0x80, 0x7f, 0x80, 0x7f,
+       0x00, 0xff, 0x00, 0xff, 0x01, 0xfe, 0x01, 0xfe,
+       0x03, 0xfc, 0x03, 0xfc, 0x07, 0xf8, 0x07, 0xf8,
+       0x0f, 0xf0, 0x0f, 0xf0, 0x1f, 0xe0, 0x1f, 0xe0,
+       0x3f, 0xc0, 0x3f, 0xc0, 0x7f, 0x80, 0x7f, 0x80,
+       0xff, 0x00, 0xff, 0x00, 0xfe, 0x01, 0xfe, 0x01,
+       0xfc, 0x03, 0xfc, 0x03, 0xf8, 0x07, 0xf8, 0x07,
+       0xf0, 0x0f, 0xf0, 0x0f, 0xe0, 0x1f, 0xe0, 0x1f,
+       0xc0, 0x3f, 0xc0, 0x3f, 0x80, 0x7f, 0x80, 0x7f,
+       0x00, 0xff, 0x00, 0xff, 0x01, 0xfe, 0x01, 0xfe,
+       0x03, 0xfc, 0x03, 0xfc, 0x07, 0xf8, 0x07, 0xf8,
+       0x0f, 0xf0, 0x0f, 0xf0, 0x1f, 0xe0, 0x1f, 0xe0,
+       0x3f, 0xc0, 0x3f, 0xc0, 0x7f, 0x80, 0x7f, 0x80};
+
+
 void fdrawbezier(float vec[4][3])
 {
        float dist;
index 594d2942e8faa5abd02bb316ee236a886c26fd73..98687bb90e01c67bc69635f43b7065fb0161311d 100644 (file)
@@ -639,6 +639,25 @@ static void draw_seq_strip(Scene *scene, ARegion *ar, Sequence *seq, int outline
        /* draw sound wave */
        if(seq->type == SEQ_SOUND) drawseqwave(scene, seq, x1, y1, x2, y2, (ar->v2d.cur.xmax - ar->v2d.cur.xmin)/ar->winx);
 
+       /* draw lock */
+       if(seq->flag & SEQ_LOCK) {
+               glEnable(GL_POLYGON_STIPPLE);
+               glEnable(GL_BLEND);
+
+               /* light stripes */
+               glColor4ub(255, 255, 255, 32);
+               glPolygonStipple(stipple_diag_stripes_pos);
+               glRectf(x1, y1, x2, y2);
+
+               /* dark stripes */
+               glColor4ub(0, 0, 0, 32);
+               glPolygonStipple(stipple_diag_stripes_neg);
+               glRectf(x1, y1, x2, y2);
+
+               glDisable(GL_POLYGON_STIPPLE);
+               glDisable(GL_BLEND);
+       }
+
        get_seq_color3ubv(scene, seq, col);
        if (G.moving && (seq->flag & SELECT)) {
                if(seq->flag & SEQ_OVERLAP) {