mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-04-21 07:28:21 -04:00
123 lines
5.1 KiB
C++
123 lines
5.1 KiB
C++
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#pragma once
|
|
|
|
#include "Color.hpp"
|
|
#include "Common.hpp"
|
|
|
|
#include "DrawCommand.hpp"
|
|
|
|
namespace gui
|
|
{
|
|
class Context;
|
|
} // namespace gui
|
|
|
|
namespace gui::renderer
|
|
{
|
|
class RectangleRenderer
|
|
{
|
|
public:
|
|
struct DrawableStyle
|
|
{
|
|
Length borderWidth{1};
|
|
Length radius{0};
|
|
Length yapSize{0};
|
|
RectangleEdge edges{RectangleEdge::All};
|
|
RectangleFlatEdge flatEdges{RectangleFlatEdge::None};
|
|
RectangleRoundedCorner roundedCorners{RectangleRoundedCorner::None};
|
|
RectangleYap yaps{RectangleYap::None};
|
|
Color borderColor{ColorFullBlack};
|
|
Color fillColor{ColorNoColor};
|
|
|
|
static auto from(const DrawRectangle &command) -> DrawableStyle;
|
|
};
|
|
|
|
static void drawFlat(Context *ctx, Point position, Length width, Length height, const DrawableStyle &style);
|
|
|
|
static void draw(Context *ctx, Point position, Length width, Length height, const DrawableStyle &style);
|
|
|
|
private:
|
|
static void fillFlatRectangle(Context *ctx, Point position, Length width, Length height, Color color);
|
|
static void fill(Context *ctx, Point startPosition, Color borderColor, Color fillColor);
|
|
|
|
static void drawSides(Context *ctx,
|
|
Point position,
|
|
Length width,
|
|
Length height,
|
|
Length penWidth,
|
|
Color color,
|
|
RectangleEdge sides);
|
|
static void drawSides(Context *ctx,
|
|
Point position,
|
|
Length width,
|
|
Length height,
|
|
Length radius,
|
|
Length yapSize,
|
|
Length penWidth,
|
|
RectangleFlatEdge flats,
|
|
RectangleYap yaps,
|
|
Color borderColor,
|
|
RectangleEdge sides);
|
|
|
|
static void drawCorners(Context *ctx,
|
|
Point position,
|
|
Length width,
|
|
Length height,
|
|
Length radius,
|
|
Length penWidth,
|
|
Color borderColor,
|
|
RectangleRoundedCorner rounded,
|
|
RectangleFlatEdge flats,
|
|
RectangleYap yaps);
|
|
|
|
static void drawTopSide(Context *ctx, Point position, Length width, Length penWidth, Color color);
|
|
static void drawTopSide(Context *ctx,
|
|
Point position,
|
|
Length width,
|
|
Length radius,
|
|
Length yapSize,
|
|
Length penWidth,
|
|
RectangleFlatEdge flat,
|
|
RectangleYap yaps,
|
|
Color borderColor);
|
|
|
|
static void drawRightSide(
|
|
Context *ctx, Point position, Length width, Length height, Length penWidth, Color color);
|
|
static void drawRightSide(Context *ctx,
|
|
Point position,
|
|
Length width,
|
|
Length height,
|
|
Length radius,
|
|
Length yapSize,
|
|
Length penWidth,
|
|
RectangleFlatEdge flat,
|
|
RectangleYap yaps,
|
|
Color borderColor);
|
|
|
|
static void drawBottomSide(
|
|
Context *ctx, Point position, Length width, Length height, Length penWidth, Color color);
|
|
static void drawBottomSide(Context *ctx,
|
|
Point position,
|
|
Length width,
|
|
Length height,
|
|
Length radius,
|
|
Length yapSize,
|
|
Length penWidth,
|
|
RectangleFlatEdge flat,
|
|
RectangleYap yaps,
|
|
Color borderColor);
|
|
|
|
static void drawLeftSide(Context *ctx, Point position, Length height, Length penWidth, Color color);
|
|
static void drawLeftSide(Context *ctx,
|
|
Point position,
|
|
Length height,
|
|
Length radius,
|
|
Length yapSize,
|
|
Length penWidth,
|
|
RectangleFlatEdge flat,
|
|
RectangleYap yaps,
|
|
Color borderColor);
|
|
};
|
|
} // namespace gui::renderer
|