1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 06:24:58 +00:00

LibGfx: Inline some AffineTransform functions

Asking if an AffineTransform is identity or translate-only can be done
inline and avoid the cost of a function call in tight loops.
This commit is contained in:
Andreas Kling 2024-03-02 10:40:38 +01:00
parent 2dacd1252c
commit e46deec846
2 changed files with 9 additions and 12 deletions

View file

@ -12,16 +12,6 @@
namespace Gfx {
bool AffineTransform::is_identity() const
{
return m_values[0] == 1 && m_values[1] == 0 && m_values[2] == 0 && m_values[3] == 1 && m_values[4] == 0 && m_values[5] == 0;
}
bool AffineTransform::is_identity_or_translation() const
{
return a() == 1 && b() == 0 && c() == 0 && d() == 1;
}
float AffineTransform::x_scale() const
{
return AK::hypot(m_values[0], m_values[1]);

View file

@ -25,8 +25,15 @@ public:
{
}
bool is_identity() const;
bool is_identity_or_translation() const;
[[nodiscard]] bool is_identity() const
{
return m_values[0] == 1 && m_values[1] == 0 && m_values[2] == 0 && m_values[3] == 1 && m_values[4] == 0 && m_values[5] == 0;
}
[[nodiscard]] bool is_identity_or_translation() const
{
return m_values[0] == 1 && m_values[1] == 0 && m_values[2] == 0 && m_values[3] == 1;
}
void map(float unmapped_x, float unmapped_y, float& mapped_x, float& mapped_y) const;