AUI Framework  master
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
ARenderContext.h
    1/*
    2 * AUI Framework - Declarative UI toolkit for modern C++20
    3 * Copyright (C) 2020-2025 Alex2772 and Contributors
    4 *
    5 * SPDX-License-Identifier: MPL-2.0
    6 *
    7 * This Source Code Form is subject to the terms of the Mozilla Public
    8 * License, v. 2.0. If a copy of the MPL was not distributed with this
    9 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
   10 */
   11
   12#pragma once
   13
   14#include <AUI/Core.h>
   15#include <glm/glm.hpp>
   16#include <AUI/Geometry2D/ARect.h>
   17#include <AUI/Common/AStaticVector.h>
   18
   19class IRenderer;
   20
   42struct API_AUI_VIEWS ARenderContext
   43{
   44    using Rectangles = AStaticVector<ARect<int>, 8>;
   45
   49    Rectangles clippingRects;
   50    IRenderer& render;
   51
   52    void clip(ARect<int> clipping);
   53
   54    [[nodiscard]]
   55    ARenderContext withShiftedPosition(glm::ivec2 by) const noexcept{
   56        auto copy = *this;
   57        for (auto& r : copy.clippingRects) r.translate(by);
   58        return copy;
   59    }
   60};
Vector-like container up to maxSize elements inplace.
Definition AStaticVector.h:33
Base class for rendering.
Definition IRenderer.h:149
Axis aligned 2D rectangle.
Definition ARect.h:24
Render context passed to AView::render.
Definition ARenderContext.h:43
Rectangles clippingRects
Axis aligned bounding boxes where the rendering is performed in, used for optimization.
Definition ARenderContext.h:49