[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47234] branches/soc-2011-tomato: draw options for mask spline matching the UV view
Campbell Barton
ideasman42 at gmail.com
Wed May 30 18:22:34 CEST 2012
Revision: 47234
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47234
Author: campbellbarton
Date: 2012-05-30 16:22:33 +0000 (Wed, 30 May 2012)
Log Message:
-----------
draw options for mask spline matching the UV view
Modified Paths:
--------------
branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py
branches/soc-2011-tomato/source/blender/editors/include/ED_mask.h
branches/soc-2011-tomato/source/blender/editors/mask/mask_draw.c
branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c
branches/soc-2011-tomato/source/blender/makesdna/DNA_mask_types.h
branches/soc-2011-tomato/source/blender/makesdna/DNA_space_types.h
branches/soc-2011-tomato/source/blender/makesrna/intern/rna_space.c
Modified: branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py
===================================================================
--- branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py 2012-05-30 15:47:12 UTC (rev 47233)
+++ branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py 2012-05-30 16:22:33 UTC (rev 47234)
@@ -711,6 +711,12 @@
col.label(text="Display Aspect Ratio:")
row = col.row()
row.prop(clip, "display_aspect", text="")
+
+ if sc.mode == 'MASKEDITING':
+ col = layout.column()
+ col.prop(sc, "mask_draw_type", text="")
+ col.prop(sc, "show_mask_smooth")
+
class CLIP_PT_marker_display(CLIP_PT_clip_view_panel, Panel):
Modified: branches/soc-2011-tomato/source/blender/editors/include/ED_mask.h
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/include/ED_mask.h 2012-05-30 15:47:12 UTC (rev 47233)
+++ branches/soc-2011-tomato/source/blender/editors/include/ED_mask.h 2012-05-30 16:22:33 UTC (rev 47234)
@@ -39,7 +39,7 @@
void ED_operatormacros_mask(void);
/* mask_draw.c */
-void ED_mask_draw(const bContext *C);
+void ED_mask_draw(const bContext *C, const char draw_flag, const char draw_type);
/* mask_shapekey.c */
int ED_mask_object_shape_auto_key_all(struct Mask *mask, const int frame);
Modified: branches/soc-2011-tomato/source/blender/editors/mask/mask_draw.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/mask/mask_draw.c 2012-05-30 15:47:12 UTC (rev 47233)
+++ branches/soc-2011-tomato/source/blender/editors/mask/mask_draw.c 2012-05-30 16:22:33 UTC (rev 47234)
@@ -236,41 +236,99 @@
/* #define USE_XOR */
-static void draw_curve_dashed(MaskSpline *spline, float *points, int tot_point, const unsigned char rgb_sel[4])
+static void mask_draw_curve_type(MaskSpline *spline, float *points, int tot_point,
+ const short is_feather, const short is_smooth,
+ const unsigned char rgb_spline[4], const char draw_type)
{
const int draw_method = (spline->flag & MASK_SPLINE_CYCLIC) ? GL_LINE_LOOP : GL_LINE_STRIP;
+ unsigned char rgb_tmp[4];
- glEnable(GL_LINE_STIPPLE);
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glVertexPointer(2, GL_FLOAT, 0, points);
+ switch (draw_type) {
+
+ case MASK_DT_OUTLINE:
+ glLineWidth(3);
+ cpack(0x0);
+
+ glDrawArrays(draw_method, 0, tot_point);
+
+ glLineWidth(1);
+ glColor4ubv(rgb_spline);
+ glDrawArrays(draw_method, 0, tot_point);
+
+ break;
+
+ case MASK_DT_DASH:
+ default:
+ glEnable(GL_LINE_STIPPLE);
+
#ifdef USE_XOR
- glEnable(GL_COLOR_LOGIC_OP);
- glLogicOp(GL_OR);
+ glEnable(GL_COLOR_LOGIC_OP);
+ glLogicOp(GL_OR);
#endif
+ glColor4ubv(rgb_spline);
+ glLineStipple(3, 0xaaaa);
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glVertexPointer(2, GL_FLOAT, 0, points);
+ glDrawArrays(draw_method, 0, tot_point);
- glColor4ubv(rgb_sel);
- glLineStipple(3, 0xaaaa);
- glEnableClientState(GL_VERTEX_ARRAY);
- glVertexPointer(2, GL_FLOAT, 0, points);
- glDrawArrays(draw_method, 0, tot_point);
-
#ifdef USE_XOR
- glDisable(GL_COLOR_LOGIC_OP);
+ glDisable(GL_COLOR_LOGIC_OP);
#endif
+ glColor4ub(0, 0, 0, 255);
+ glLineStipple(3, 0x5555);
+ glDrawArrays(draw_method, 0, tot_point);
- glColor4ub(0, 0, 0, 255);
- glLineStipple(3, 0x5555);
- glDrawArrays(draw_method, 0, tot_point);
+ glDisable(GL_LINE_STIPPLE);
+ break;
+
+
+ case MASK_DT_BLACK:
+ case MASK_DT_WHITE:
+ if (draw_type == MASK_DT_BLACK) { rgb_tmp[0] = rgb_tmp[1] = rgb_tmp[2] = 0; }
+ else { rgb_tmp[0] = rgb_tmp[1] = rgb_tmp[2] = 255; }
+ /* alpha values seem too low but gl draws many points that compensate for it */
+ if (is_feather) { rgb_tmp[3] = 64; }
+ else { rgb_tmp[3] = 128; }
+
+ if (is_feather) {
+ rgb_tmp[0] = (unsigned char)(((short)rgb_tmp[0] + (short)rgb_spline[0]) / 2);
+ rgb_tmp[1] = (unsigned char)(((short)rgb_tmp[1] + (short)rgb_spline[1]) / 2);
+ rgb_tmp[2] = (unsigned char)(((short)rgb_tmp[2] + (short)rgb_spline[2]) / 2);
+ }
+
+ if (is_smooth == FALSE && is_feather) {
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ }
+
+ glColor4ubv(rgb_tmp);
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glVertexPointer(2, GL_FLOAT, 0, points);
+ glDrawArrays(draw_method, 0, tot_point);
+
+ glDrawArrays(draw_method, 0, tot_point);
+
+ if (is_smooth == FALSE && is_feather) {
+ glDisable(GL_BLEND);
+ }
+
+ break;
+ }
+
glDisableClientState(GL_VERTEX_ARRAY);
- glDisable(GL_LINE_STIPPLE);
}
static void draw_spline_curve(MaskObject *maskobj, MaskSpline *spline,
- const char use_smooth, const char draw_type)
+ const char draw_flag, const char draw_type)
{
unsigned char rgb_tmp[4];
- const int is_spline_sel = (spline->flag & SELECT) && (maskobj->restrictflag & MASK_RESTRICT_SELECT) == 0;
+ const short is_spline_sel = (spline->flag & SELECT) && (maskobj->restrictflag & MASK_RESTRICT_SELECT) == 0;
+ const short is_smooth = (draw_flag & MASK_DRAWFLAG_SMOOTH);
float *diff_points, *feather_points;
int tot_diff_point, tot_feather_point;
@@ -279,7 +337,7 @@
if (!diff_points)
return;
- if (use_smooth) {
+ if (is_smooth) {
glEnable(GL_LINE_SMOOTH);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
@@ -289,15 +347,19 @@
/* draw feather */
mask_spline_feather_color_get(maskobj, spline, is_spline_sel, rgb_tmp);
- draw_curve_dashed(spline, feather_points, tot_feather_point, rgb_tmp);
+ mask_draw_curve_type(spline, feather_points, tot_feather_point,
+ TRUE, is_smooth,
+ rgb_tmp, draw_type);
MEM_freeN(feather_points);
/* draw main curve */
mask_spline_color_get(maskobj, spline, is_spline_sel, rgb_tmp);
- draw_curve_dashed(spline, diff_points, tot_diff_point, rgb_tmp);
+ mask_draw_curve_type(spline, diff_points, tot_diff_point,
+ FALSE, is_smooth,
+ rgb_tmp, draw_type);
MEM_freeN(diff_points);
- if (use_smooth) {
+ if (draw_flag & MASK_DRAWFLAG_SMOOTH) {
glDisable(GL_LINE_SMOOTH);
glDisable(GL_BLEND);
}
@@ -306,7 +368,7 @@
}
static void draw_maskobjs(Mask *mask,
- const char use_smooth, const char draw_type)
+ const char draw_flag, const char draw_type)
{
MaskObject *maskobj;
@@ -320,7 +382,7 @@
for (spline = maskobj->splines.first; spline; spline = spline->next) {
/* draw curve itself first... */
- draw_spline_curve(maskobj, spline, use_smooth, draw_type);
+ draw_spline_curve(maskobj, spline, draw_flag, draw_type);
// draw_spline_parents(maskobj, spline);
@@ -334,7 +396,7 @@
void *back = spline->points_deform;
spline->points_deform = NULL;
- draw_spline_curve(maskobj, spline, use_smooth, draw_type);
+ draw_spline_curve(maskobj, spline, draw_flag, draw_type);
// draw_spline_parents(maskobj, spline);
draw_spline_points(maskobj, spline);
spline->points_deform = back;
@@ -343,12 +405,13 @@
}
}
-void ED_mask_draw(const bContext *C)
+void ED_mask_draw(const bContext *C,
+ const char draw_flag, const char draw_type)
{
Mask *mask = CTX_data_edit_mask(C);
if (!mask)
return;
- draw_maskobjs(mask, FALSE, 0);
+ draw_maskobjs(mask, draw_flag, draw_type);
}
Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c 2012-05-30 15:47:12 UTC (rev 47233)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c 2012-05-30 16:22:33 UTC (rev 47234)
@@ -1136,7 +1136,7 @@
glScalef(maxdim * zoomx, maxdim * zoomy, 0);
glMultMatrixf(sc->stabmat);
- ED_mask_draw((bContext *)C);
+ ED_mask_draw((bContext *)C, sc->mask_draw_flag, sc->mask_draw_type);
ED_region_draw_cb_draw(C, ar, REGION_DRAW_POST_VIEW);
Modified: branches/soc-2011-tomato/source/blender/makesdna/DNA_mask_types.h
===================================================================
--- branches/soc-2011-tomato/source/blender/makesdna/DNA_mask_types.h 2012-05-30 15:47:12 UTC (rev 47233)
+++ branches/soc-2011-tomato/source/blender/makesdna/DNA_mask_types.h 2012-05-30 16:22:33 UTC (rev 47234)
@@ -132,4 +132,16 @@
#define MASK_RESTRICT_SELECT 2
#define MASK_RESTRICT_RENDER 4
+/* SpaceClip->mask_draw_flag */
+#define MASK_DRAWFLAG_SMOOTH 1
+
+/* copy of eSpaceImage_UVDT */
+/* SpaceClip->mask_draw_type */
+enum {
+ MASK_DT_OUTLINE = 0,
+ MASK_DT_DASH,
+ MASK_DT_BLACK,
+ MASK_DT_WHITE
+};
+
#endif // __DNA_MASK_TYPES_H__
Modified: branches/soc-2011-tomato/source/blender/makesdna/DNA_space_types.h
===================================================================
--- branches/soc-2011-tomato/source/blender/makesdna/DNA_space_types.h 2012-05-30 15:47:12 UTC (rev 47233)
+++ branches/soc-2011-tomato/source/blender/makesdna/DNA_space_types.h 2012-05-30 16:22:33 UTC (rev 47234)
@@ -1014,6 +1014,10 @@
/* **** mask editing **** */
struct Mask *mask;
+ /* draw options */
+ char mask_draw_flag;
+ char mask_draw_type;
+ char pad3[6];
} SpaceClip;
/* SpaceClip->flag */
Modified: branches/soc-2011-tomato/source/blender/makesrna/intern/rna_space.c
===================================================================
--- branches/soc-2011-tomato/source/blender/makesrna/intern/rna_space.c 2012-05-30 15:47:12 UTC (rev 47233)
+++ branches/soc-2011-tomato/source/blender/makesrna/intern/rna_space.c 2012-05-30 16:22:33 UTC (rev 47234)
@@ -45,6 +45,7 @@
#include "DNA_object_types.h"
#include "DNA_space_types.h"
#include "DNA_sequence_types.h"
+#include "DNA_mask_types.h"
#include "DNA_view3d_types.h"
#include "WM_api.h"
@@ -1068,6 +1069,14 @@
#else
+static EnumPropertyItem dt_uv_items[] = {
+ {SI_UVDT_OUTLINE, "OUTLINE", 0, "Outline", "Draw white edges with black outline"},
+ {SI_UVDT_DASH, "DASH", 0, "Dash", "Draw dashed black-white edges"},
+ {SI_UVDT_BLACK, "BLACK", 0, "Black", "Draw black edges"},
+ {SI_UVDT_WHITE, "WHITE", 0, "White", "Draw white edges"},
+ {0, NULL, 0, NULL, NULL}
+};
+
static void rna_def_space(BlenderRNA *brna)
{
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list