[Bf-blender-cvs] [f2858fbb9a7] blender2.8: UI: Draw curve map with solid color

Charlie Jolly noreply at git.blender.org
Sat Nov 3 18:45:05 CET 2018


Commit: f2858fbb9a7bd90c63cfdf619c6d21f2f2b57418
Author: Charlie Jolly
Date:   Fri Nov 2 18:56:45 2018 +0000
Branches: blender2.8
https://developer.blender.org/rBf2858fbb9a7bd90c63cfdf619c6d21f2f2b57418

UI: Draw curve map with solid color

Differential Revision: https://developer.blender.org/D3891

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

M	source/blender/editors/interface/interface_draw.c

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

diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c
index fcff7378754..d696dbd0d88 100644
--- a/source/blender/editors/interface/interface_draw.c
+++ b/source/blender/editors/interface/interface_draw.c
@@ -1765,43 +1765,54 @@ void ui_draw_but_CURVE(ARegion *ar, uiBut *but, uiWidgetColors *wcol, const rcti
 		}
 		immEnd();
 	}
+	immUnbindProgram();
 
 	/* the curve */
-	immUniformColor3ubv((unsigned char *)wcol->item);
-	GPU_line_smooth(true);
+	immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
+	immUniformColor3ubvAlpha((unsigned char *)wcol->item, 128);
 	GPU_blend(true);
-	immBegin(GPU_PRIM_LINE_STRIP, (CM_TABLE + 1) + 2);
+	GPU_polygon_smooth(true);
+	immBegin(GPU_PRIM_TRI_STRIP, (CM_TABLE * 2 + 2) + 4);
 
 	if (cuma->table == NULL)
 		curvemapping_changed(cumap, false);
 
 	CurveMapPoint *cmp = cuma->table;
 
+	float fx, fy;
+
 	/* first point */
 	if ((cuma->flag & CUMA_EXTEND_EXTRAPOLATE) == 0) {
-		immVertex2f(pos, rect->xmin, rect->ymin + zoomy * (cmp[0].y - offsy));
+		fx = rect->xmin;
+		fy = rect->ymin + zoomy * (cmp[0].y - offsy);
 	}
 	else {
-		float fx = rect->xmin + zoomx * (cmp[0].x - offsx + cuma->ext_in[0]);
-		float fy = rect->ymin + zoomy * (cmp[0].y - offsy + cuma->ext_in[1]);
-		immVertex2f(pos, fx, fy);
+		fx = rect->xmin + zoomx * (cmp[0].x - offsx + cuma->ext_in[0]);
+		fy = rect->ymin + zoomy * (cmp[0].y - offsy + cuma->ext_in[1]);
 	}
+	immVertex2f(pos, fx, rect->ymin);
+	immVertex2f(pos, fx, fy);
+	/* curve */
 	for (int a = 0; a <= CM_TABLE; a++) {
-		float fx = rect->xmin + zoomx * (cmp[a].x - offsx);
-		float fy = rect->ymin + zoomy * (cmp[a].y - offsy);
+		fx = rect->xmin + zoomx * (cmp[a].x - offsx);
+		fy = rect->ymin + zoomy * (cmp[a].y - offsy);		
+		immVertex2f(pos, fx, rect->ymin);
 		immVertex2f(pos, fx, fy);
 	}
 	/* last point */
 	if ((cuma->flag & CUMA_EXTEND_EXTRAPOLATE) == 0) {
-		immVertex2f(pos, rect->xmax, rect->ymin + zoomy * (cmp[CM_TABLE].y - offsy));
+		fx = rect->xmax;
+		fy = rect->ymin + zoomy * (cmp[CM_TABLE].y - offsy);
 	}
 	else {
-		float fx = rect->xmin + zoomx * (cmp[CM_TABLE].x - offsx - cuma->ext_out[0]);
-		float fy = rect->ymin + zoomy * (cmp[CM_TABLE].y - offsy - cuma->ext_out[1]);
-		immVertex2f(pos, fx, fy);
+		fx = rect->xmin + zoomx * (cmp[CM_TABLE].x - offsx - cuma->ext_out[0]);
+		fy = rect->ymin + zoomy * (cmp[CM_TABLE].y - offsy - cuma->ext_out[1]);
 	}
+	immVertex2f(pos, fx, rect->ymin);
+	immVertex2f(pos, fx, fy);
+
 	immEnd();
-	GPU_line_smooth(false);
+	GPU_polygon_smooth(false);
 	GPU_blend(false);
 	immUnbindProgram();
 
@@ -1812,7 +1823,7 @@ void ui_draw_but_CURVE(ARegion *ar, uiBut *but, uiWidgetColors *wcol, const rcti
 	immBindBuiltinProgram(GPU_SHADER_2D_FLAT_COLOR);
 
 	cmp = cuma->curve;
-	GPU_point_size(3.0f);
+	GPU_point_size(4.0f);
 	immBegin(GPU_PRIM_POINTS, cuma->totpoint);
 	for (int a = 0; a < cuma->totpoint; a++) {
 		float color[4];



More information about the Bf-blender-cvs mailing list