Skip to content

Commit 0472d4d

Browse files
committed
Fix LayerGradient not adapte float4 color format
1 parent d6aeb84 commit 0472d4d

File tree

2 files changed

+20
-30
lines changed

2 files changed

+20
-30
lines changed

core/2d/Layer.cpp

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -238,25 +238,25 @@ void LayerGradient::updateColor()
238238
Color E(_endColor, _endOpacity * opacityf / 255.0f);
239239

240240
// (-1, -1)
241-
_quad.bl.color.r = (E.r + (S.r - E.r) * ((c + u.x + u.y) / (2.0f * c))) * 255;
242-
_quad.bl.color.g = (E.g + (S.g - E.g) * ((c + u.x + u.y) / (2.0f * c))) * 255;
243-
_quad.bl.color.b = (E.b + (S.b - E.b) * ((c + u.x + u.y) / (2.0f * c))) * 255;
244-
_quad.bl.color.a = (E.a + (S.a - E.a) * ((c + u.x + u.y) / (2.0f * c))) * 255;
241+
_quad.bl.color.r = (E.r + (S.r - E.r) * ((c + u.x + u.y) / (2.0f * c)));
242+
_quad.bl.color.g = (E.g + (S.g - E.g) * ((c + u.x + u.y) / (2.0f * c)));
243+
_quad.bl.color.b = (E.b + (S.b - E.b) * ((c + u.x + u.y) / (2.0f * c)));
244+
_quad.bl.color.a = (E.a + (S.a - E.a) * ((c + u.x + u.y) / (2.0f * c)));
245245
// (1, -1)
246-
_quad.br.color.r = (E.r + (S.r - E.r) * ((c - u.x + u.y) / (2.0f * c))) * 255;
247-
_quad.br.color.g = (E.g + (S.g - E.g) * ((c - u.x + u.y) / (2.0f * c))) * 255;
248-
_quad.br.color.b = (E.b + (S.b - E.b) * ((c - u.x + u.y) / (2.0f * c))) * 255;
249-
_quad.br.color.a = (E.a + (S.a - E.a) * ((c - u.x + u.y) / (2.0f * c))) * 255;
246+
_quad.br.color.r = (E.r + (S.r - E.r) * ((c - u.x + u.y) / (2.0f * c)));
247+
_quad.br.color.g = (E.g + (S.g - E.g) * ((c - u.x + u.y) / (2.0f * c)));
248+
_quad.br.color.b = (E.b + (S.b - E.b) * ((c - u.x + u.y) / (2.0f * c)));
249+
_quad.br.color.a = (E.a + (S.a - E.a) * ((c - u.x + u.y) / (2.0f * c)));
250250
// (-1, 1)
251-
_quad.tl.color.r = (E.r + (S.r - E.r) * ((c + u.x - u.y) / (2.0f * c))) * 255;
252-
_quad.tl.color.g = (E.g + (S.g - E.g) * ((c + u.x - u.y) / (2.0f * c))) * 255;
253-
_quad.tl.color.b = (E.b + (S.b - E.b) * ((c + u.x - u.y) / (2.0f * c))) * 255;
254-
_quad.tl.color.a = (E.a + (S.a - E.a) * ((c + u.x - u.y) / (2.0f * c))) * 255;
251+
_quad.tl.color.r = (E.r + (S.r - E.r) * ((c + u.x - u.y) / (2.0f * c)));
252+
_quad.tl.color.g = (E.g + (S.g - E.g) * ((c + u.x - u.y) / (2.0f * c)));
253+
_quad.tl.color.b = (E.b + (S.b - E.b) * ((c + u.x - u.y) / (2.0f * c)));
254+
_quad.tl.color.a = (E.a + (S.a - E.a) * ((c + u.x - u.y) / (2.0f * c)));
255255
// (1, 1)
256-
_quad.tr.color.r = (E.r + (S.r - E.r) * ((c - u.x - u.y) / (2.0f * c))) * 255;
257-
_quad.tr.color.g = (E.g + (S.g - E.g) * ((c - u.x - u.y) / (2.0f * c))) * 255;
258-
_quad.tr.color.b = (E.b + (S.b - E.b) * ((c - u.x - u.y) / (2.0f * c))) * 255;
259-
_quad.tr.color.a = (E.a + (S.a - E.a) * ((c - u.x - u.y) / (2.0f * c))) * 255;
256+
_quad.tr.color.r = (E.r + (S.r - E.r) * ((c - u.x - u.y) / (2.0f * c)));
257+
_quad.tr.color.g = (E.g + (S.g - E.g) * ((c - u.x - u.y) / (2.0f * c)));
258+
_quad.tr.color.b = (E.b + (S.b - E.b) * ((c - u.x - u.y) / (2.0f * c)));
259+
_quad.tr.color.a = (E.a + (S.a - E.a) * ((c - u.x - u.y) / (2.0f * c)));
260260

261261
// renders using batch node
262262
if (_renderMode == RenderMode::QUAD_BATCHNODE)
@@ -409,10 +409,10 @@ bool LayerRadialGradient::initWithColor(const ax::Color4B& startColor,
409409

410410
if (Node::initLayer())
411411
{
412-
convertColor4B24F(_startColorRend, startColor);
412+
_startColorRend = static_cast<ax::Color>(startColor);
413413
_startColor = startColor;
414414

415-
convertColor4B24F(_endColorRend, endColor);
415+
_endColorRend = static_cast<ax::Color>(endColor);
416416
_endColor = endColor;
417417

418418
_expand = expand;
@@ -514,7 +514,7 @@ void LayerRadialGradient::setStartColor(const Color3B& color)
514514
void LayerRadialGradient::setStartColor(const ax::Color4B& color)
515515
{
516516
_startColor = color;
517-
convertColor4B24F(_startColorRend, _startColor);
517+
_startColorRend = static_cast<ax::Color>(color);
518518
}
519519

520520
Color4B LayerRadialGradient::getStartColor() const
@@ -535,7 +535,7 @@ void LayerRadialGradient::setEndColor(const Color3B& color)
535535
void LayerRadialGradient::setEndColor(const ax::Color4B& color)
536536
{
537537
_endColor = color;
538-
convertColor4B24F(_endColorRend, _endColor);
538+
_endColorRend = static_cast<ax::Color>(color);
539539
}
540540

541541
Color4B LayerRadialGradient::getEndColor() const
@@ -558,14 +558,6 @@ const BlendFunc& LayerRadialGradient::getBlendFunc() const
558558
return _blendFunc;
559559
}
560560

561-
void LayerRadialGradient::convertColor4B24F(Color& outColor, const Color4B& inColor)
562-
{
563-
outColor.r = inColor.r / 255.0f;
564-
outColor.g = inColor.g / 255.0f;
565-
outColor.b = inColor.b / 255.0f;
566-
outColor.a = inColor.a / 255.0f;
567-
}
568-
569561
/// MultiplexLayer
570562

571563
LayerMultiplex::LayerMultiplex() : _enabledLayer(0) {}

core/2d/Layer.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -320,8 +320,6 @@ class AX_DLL LayerRadialGradient : public Node, BlendProtocol
320320
float expand);
321321

322322
private:
323-
void convertColor4B24F(Color& outColor, const Color4B& inColor);
324-
325323
Color4B _startColor = Color4B::BLACK;
326324
Color _startColorRend = Color::BLACK; // start color used in shader
327325

0 commit comments

Comments
 (0)