AUI Framework  master
Cross-platform module-based framework for developing C++20 desktop applications
ARenderContext.h
1/*
2 * AUI Framework - Declarative UI toolkit for modern C++20
3 * Copyright (C) 2020-2024 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{
45
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};
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