| /* |
| * Copyright 2022 Rive |
| */ |
| |
| #include "bench.hpp" |
| |
| #include "rive/math/raw_path.hpp" |
| |
| using namespace rive; |
| |
| static Vec2D randpt() |
| { |
| return Vec2D(float(rand()), float(rand())) * 100 / (float)RAND_MAX; |
| } |
| |
| // Measure the speed of RawPath::bounds(). |
| class RawPathBounds : public Bench |
| { |
| public: |
| RawPathBounds() |
| { |
| // Make a random path. |
| srand(0); |
| for (int i = 0; i < 1000000; ++i) |
| { |
| int r = rand() % 22; |
| if (r == 0) |
| { |
| m_path.move(randpt()); |
| } |
| else if (r == 1) |
| { |
| m_path.close(); |
| } |
| else if (r < 12) |
| { |
| m_path.line(randpt()); |
| } |
| else |
| { |
| m_path.cubic(randpt(), randpt(), randpt()); |
| } |
| } |
| } |
| |
| private: |
| int run() const override |
| { |
| AABB bounds = m_path.bounds(); |
| return (int)(bounds.minX + bounds.minY + bounds.maxX + bounds.maxY); |
| } |
| |
| RawPath m_path; |
| }; |
| |
| REGISTER_BENCH(RawPathBounds); |