1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Tidied up some SVG transform parsing code.

This commit is contained in:
jules 2014-11-06 10:06:59 +00:00
parent e58a0ace65
commit bce3aefadd

View file

@ -1157,9 +1157,9 @@ private:
tokens.removeEmptyStrings (true);
float numbers [6];
float numbers[6];
for (int i = 0; i < 6; ++i)
for (int i = 0; i < numElementsInArray (numbers); ++i)
numbers[i] = tokens[i].getFloatValue();
AffineTransform trans;
@ -1171,33 +1171,23 @@ private:
}
else if (t.startsWithIgnoreCase ("translate"))
{
jassert (tokens.size() == 2);
trans = AffineTransform::translation (numbers[0], numbers[1]);
}
else if (t.startsWithIgnoreCase ("scale"))
{
if (tokens.size() == 1)
trans = AffineTransform::scale (numbers[0]);
else
trans = AffineTransform::scale (numbers[0], numbers[1]);
trans = AffineTransform::scale (numbers[0], numbers[tokens.size() > 1 ? 1 : 0]);
}
else if (t.startsWithIgnoreCase ("rotate"))
{
if (tokens.size() != 3)
trans = AffineTransform::rotation (numbers[0] / (180.0f / float_Pi));
else
trans = AffineTransform::rotation (numbers[0] / (180.0f / float_Pi),
numbers[1], numbers[2]);
trans = AffineTransform::rotation (numbers[0] / (180.0f / float_Pi), numbers[1], numbers[2]);
}
else if (t.startsWithIgnoreCase ("skewX"))
{
trans = AffineTransform (1.0f, std::tan (numbers[0] * (float_Pi / 180.0f)), 0.0f,
0.0f, 1.0f, 0.0f);
trans = AffineTransform::shear (std::tan (numbers[0] * (float_Pi / 180.0f)), 0.0f);
}
else if (t.startsWithIgnoreCase ("skewY"))
{
trans = AffineTransform (1.0f, 0.0f, 0.0f,
std::tan (numbers[0] * (float_Pi / 180.0f)), 1.0f, 0.0f);
trans = AffineTransform::shear (0.0f, std::tan (numbers[0] * (float_Pi / 180.0f)));
}
result = trans.followedBy (result);