removed triangle fan draw on color picker

This commit is contained in:
Anis 2016-03-04 22:18:12 +01:00
parent eb20b9e614
commit 87f62c427c

View file

@ -121,68 +121,76 @@ void GuiColorPickerCtrl::drawBlendBox(RectI &bounds, ColorF &c1, ColorF &c2, Col
S32 l = bounds.point.x, r = bounds.point.x + bounds.extent.x; S32 l = bounds.point.x, r = bounds.point.x + bounds.extent.x;
S32 t = bounds.point.y, b = bounds.point.y + bounds.extent.y; S32 t = bounds.point.y, b = bounds.point.y + bounds.extent.y;
//A couple of checks to determine if color blend
//A couple of checks to determine if color blend //A couple of checks to determine if color blend
if(c1 == colorWhite && c3 == colorAlpha && c4 == colorBlack) if(c1 == colorWhite && c3 == colorAlpha && c4 == colorBlack)
{ {
//Color //Color
PrimBuild::begin(GFXTriangleFan, 4); PrimBuild::begin(GFXTriangleStrip, 4);
PrimBuild::color( c2 );
PrimBuild::vertex2i( r, t );
PrimBuild::color( c2 ); PrimBuild::color( c2 );
PrimBuild::vertex2i( r, b ); PrimBuild::vertex2i(l, t);
PrimBuild::color( c2 );
PrimBuild::vertex2i(r, t);
PrimBuild::color( c2 ); PrimBuild::color( c2 );
PrimBuild::vertex2i( l, b ); PrimBuild::vertex2i( l, b );
PrimBuild::color( c2 ); PrimBuild::color( c2 );
PrimBuild::vertex2i( l, t ); PrimBuild::vertex2i(r, b);
PrimBuild::end(); PrimBuild::end();
//White //White
PrimBuild::begin( GFXTriangleFan, 4 ); PrimBuild::begin(GFXTriangleStrip, 4);
PrimBuild::color( colorAlphaW );
PrimBuild::vertex2i( r, t ); PrimBuild::color(c1);
PrimBuild::vertex2i(l, t);
PrimBuild::color( colorAlphaW ); PrimBuild::color( colorAlphaW );
PrimBuild::vertex2i( r, b ); PrimBuild::vertex2i(r, t);
PrimBuild::color( c1 ); PrimBuild::color( c1 );
PrimBuild::vertex2i( l, b ); PrimBuild::vertex2i( l, b );
PrimBuild::color( c1 ); PrimBuild::color(colorAlphaW);
PrimBuild::vertex2i( l, t ); PrimBuild::vertex2i(r, b);
PrimBuild::end(); PrimBuild::end();
//Black //Black
PrimBuild::begin( GFXTriangleFan, 4 ); PrimBuild::begin(GFXTriangleStrip, 4);
PrimBuild::color(c3);
PrimBuild::vertex2i(l, t);
PrimBuild::color( c3 ); PrimBuild::color( c3 );
PrimBuild::vertex2i( r, t ); PrimBuild::vertex2i( r, t );
PrimBuild::color( c4 ); PrimBuild::color( c4 );
PrimBuild::vertex2i( r, b ); PrimBuild::vertex2i(l, b);
PrimBuild::color( c4 ); PrimBuild::color( c4 );
PrimBuild::vertex2i( l, b ); PrimBuild::vertex2i(r, b);
PrimBuild::color( c3 );
PrimBuild::vertex2i( l, t );
PrimBuild::end(); PrimBuild::end();
} }
else else
{ {
PrimBuild::begin( GFXTriangleFan, 4 ); PrimBuild::begin(GFXTriangleStrip, 4);
PrimBuild::color( c1 ); PrimBuild::color( c1 );
PrimBuild::vertex2i( l, t ); PrimBuild::vertex2i( l, t );
PrimBuild::color( c2 ); PrimBuild::color( c2 );
PrimBuild::vertex2i( r, t ); PrimBuild::vertex2i( r, t );
PrimBuild::color(c4);
PrimBuild::vertex2i(l, b);
PrimBuild::color( c3 ); PrimBuild::color( c3 );
PrimBuild::vertex2i( r, b ); PrimBuild::vertex2i( r, b );
PrimBuild::color( c4 );
PrimBuild::vertex2i( l, b );
PrimBuild::end(); PrimBuild::end();
} }
} }
@ -191,45 +199,48 @@ void GuiColorPickerCtrl::drawBlendBox(RectI &bounds, ColorF &c1, ColorF &c2, Col
/// Function to draw a set of boxes blending throughout an array of colors /// Function to draw a set of boxes blending throughout an array of colors
void GuiColorPickerCtrl::drawBlendRangeBox(RectI &bounds, bool vertical, U8 numColors, ColorI *colors) void GuiColorPickerCtrl::drawBlendRangeBox(RectI &bounds, bool vertical, U8 numColors, ColorI *colors)
{ {
GFX->setStateBlock(mStateBlock); GFX->setStateBlock(mStateBlock);
S32 l = bounds.point.x, r = bounds.point.x + bounds.extent.x + 4; S32 l = bounds.point.x, r = bounds.point.x + bounds.extent.x + 4;
S32 t = bounds.point.y, b = bounds.point.y + bounds.extent.y + 4; S32 t = bounds.point.y, b = bounds.point.y + bounds.extent.y + 4;
// Calculate increment value // Calculate increment value
S32 x_inc = int(mFloor((r - l) / F32(numColors-1))); S32 x_inc = int(mFloor((r - l) / F32(numColors - 1)));
S32 y_inc = int(mFloor((b - t) / F32(numColors-1))); S32 y_inc = int(mFloor((b - t) / F32(numColors - 1)));
for( U16 i = 0;i < numColors - 1; i++ ) for (U16 i = 0; i < numColors - 1; i++)
{ {
// This is not efficent, but then again it doesn't really need to be. -pw // This is not efficent, but then again it doesn't really need to be. -pw
PrimBuild::begin( GFXTriangleFan, 4 ); PrimBuild::begin(GFXTriangleStrip, 4);
if (!vertical) // Horizontal (+x) if (!vertical) // Horizontal (+x)
{ {
// First color // First color
PrimBuild::color( colors[i] ); PrimBuild::color(colors[i]);
PrimBuild::vertex2i( l, t ); PrimBuild::vertex2i(l, t);
PrimBuild::vertex2i( l, b ); PrimBuild::color(colors[i + 1]);
PrimBuild::vertex2i(l + x_inc, t);
// Second color // Second color
PrimBuild::color( colors[i+1] ); PrimBuild::color(colors[i]);
PrimBuild::vertex2i( l + x_inc, b ); PrimBuild::vertex2i(l, b);
PrimBuild::vertex2i( l + x_inc, t ); PrimBuild::color(colors[i + 1]);
PrimBuild::vertex2i(l + x_inc, b);
l += x_inc; l += x_inc;
} }
else // Vertical (+y) else // Vertical (+y)
{ {
// First color // First color
PrimBuild::color( colors[i] ); PrimBuild::color(colors[i]);
PrimBuild::vertex2i( l, t ); PrimBuild::vertex2i(l, t);
PrimBuild::vertex2i( r, t ); PrimBuild::color(colors[i + 1]);
PrimBuild::vertex2i(l, t + y_inc);
// Second color // Second color
PrimBuild::color( colors[i+1] ); PrimBuild::color(colors[i]);
PrimBuild::vertex2i( r, t + y_inc ); PrimBuild::vertex2i(r, t);
PrimBuild::vertex2i( l, t + y_inc ); PrimBuild::color(colors[i + 1]);
PrimBuild::vertex2i(r, t + y_inc);
t += y_inc; t += y_inc;
} }
PrimBuild::end(); PrimBuild::end();