Coverage Report

Created: 2026-09-26 06:49

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/serenity/Userland/Libraries/LibGfx/BoundingBox.h
Line
Count
Source
1
/*
2
 * Copyright (c) 2023, MacDue <macdue@dueutil.tech>
3
 *
4
 * SPDX-License-Identifier: BSD-2-Clause
5
 */
6
7
#pragma once
8
9
#include <LibGfx/Point.h>
10
#include <LibGfx/Rect.h>
11
12
namespace Gfx {
13
14
template<typename T>
15
class BoundingBox {
16
public:
17
481k
    constexpr BoundingBox() = default;
Gfx::BoundingBox<float>::BoundingBox()
Line
Count
Source
17
481k
    constexpr BoundingBox() = default;
Unexecuted instantiation: Gfx::BoundingBox<Web::CSSPixels>::BoundingBox()
18
19
    constexpr void add_point(T x, T y)
20
70.2M
    {
21
70.2M
        if (m_has_no_points) {
22
479k
            m_min_x = m_max_x = x;
23
479k
            m_min_y = m_max_y = y;
24
479k
            m_has_no_points = false;
25
69.7M
        } else {
26
69.7M
            m_min_x = min(m_min_x, x);
27
69.7M
            m_min_y = min(m_min_y, y);
28
69.7M
            m_max_x = max(m_max_x, x);
29
69.7M
            m_max_y = max(m_max_y, y);
30
69.7M
        }
31
70.2M
    }
Gfx::BoundingBox<float>::add_point(float, float)
Line
Count
Source
20
70.2M
    {
21
70.2M
        if (m_has_no_points) {
22
479k
            m_min_x = m_max_x = x;
23
479k
            m_min_y = m_max_y = y;
24
479k
            m_has_no_points = false;
25
69.7M
        } else {
26
69.7M
            m_min_x = min(m_min_x, x);
27
69.7M
            m_min_y = min(m_min_y, y);
28
69.7M
            m_max_x = max(m_max_x, x);
29
69.7M
            m_max_y = max(m_max_y, y);
30
69.7M
        }
31
70.2M
    }
Unexecuted instantiation: Gfx::BoundingBox<Web::CSSPixels>::add_point(Web::CSSPixels, Web::CSSPixels)
32
33
481k
    constexpr T x() const { return m_min_x; }
Gfx::BoundingBox<float>::x() const
Line
Count
Source
33
481k
    constexpr T x() const { return m_min_x; }
Unexecuted instantiation: Gfx::BoundingBox<Web::CSSPixels>::x() const
34
481k
    constexpr T y() const { return m_min_y; }
Gfx::BoundingBox<float>::y() const
Line
Count
Source
34
481k
    constexpr T y() const { return m_min_y; }
Unexecuted instantiation: Gfx::BoundingBox<Web::CSSPixels>::y() const
35
481k
    constexpr T width() const { return m_max_x - m_min_x; }
Gfx::BoundingBox<float>::width() const
Line
Count
Source
35
481k
    constexpr T width() const { return m_max_x - m_min_x; }
Unexecuted instantiation: Gfx::BoundingBox<Web::CSSPixels>::width() const
36
481k
    constexpr T height() const { return m_max_y - m_min_y; }
Gfx::BoundingBox<float>::height() const
Line
Count
Source
36
481k
    constexpr T height() const { return m_max_y - m_min_y; }
Unexecuted instantiation: Gfx::BoundingBox<Web::CSSPixels>::height() const
37
38
    void add_point(Point<T> point)
39
70.2M
    {
40
70.2M
        add_point(point.x(), point.y());
41
70.2M
    }
Gfx::BoundingBox<float>::add_point(Gfx::Point<float>)
Line
Count
Source
39
70.2M
    {
40
70.2M
        add_point(point.x(), point.y());
41
70.2M
    }
Unexecuted instantiation: Gfx::BoundingBox<Web::CSSPixels>::add_point(Gfx::Point<Web::CSSPixels>)
42
43
    constexpr Rect<T> to_rect() const
44
481k
    {
45
481k
        return Rect<T> { x(), y(), width(), height() };
46
481k
    }
47
48
    constexpr operator Rect<T>() const
49
481k
    {
50
481k
        return to_rect();
51
481k
    }
52
53
private:
54
    T m_min_x { 0 };
55
    T m_min_y { 0 };
56
    T m_max_x { 0 };
57
    T m_max_y { 0 };
58
    bool m_has_no_points { true };
59
};
60
61
using FloatBoundingBox = BoundingBox<float>;
62
using IntBoundingBox = BoundingBox<int>;
63
64
}