JNGL
Easy to use cross-platform 2D game library
Loading...
Searching...
No Matches
shapes.hpp
Go to the documentation of this file.
1// Copyright 2012-2026 Jan Niklas Hasse <jhasse@bixense.com>
2// For conditions of distribution and use, see copyright notice in LICENSE.txt
5#pragma once
6
7#include "Rgba.hpp"
8#include "Vec2.hpp"
9
10#include <cstdint>
11
12namespace jngl {
13
14class Mat3;
15class Rgba;
16
21
24
27void setColor(Rgb, unsigned char alpha);
28
29void setColor(unsigned char red, unsigned char green, unsigned char blue);
30
31void setColor(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha);
32
35void setAlpha(uint8_t alpha);
36
37[[deprecated("Use setAlpha instead")]]
39void pushAlpha(unsigned char alpha);
40
41[[deprecated("Use setAlpha instead")]]
43void popAlpha();
44
45[[deprecated("Pass line width to drawLine instead")]]
47void setLineWidth(float width);
48
51[[deprecated("Use drawLine(Vec2, Vec2, float lineWidth) instead")]]
52void drawLine(Vec2 start, Vec2 end);
53
55void drawLine(Vec2 start, Vec2 end, float lineWidth);
56
58void drawLine(Vec2 start, Vec2 end, float lineWidth, Rgba color);
59
60[[deprecated("Use drawLine(Vec2, Vec2, float lineWidth) instead")]]
62void drawLine(double xstart, double ystart, double xend, double yend);
63
68void drawLine(Mat3 modelview, Vec2 start, Vec2 end);
69
71void drawLine(Mat3 modelview, Vec2 start, Vec2 end, float lineWidth);
72
74void drawLine(Mat3 modelview, Vec2 start, Vec2 end, float lineWidth, Rgba color);
75
78[[deprecated("Use drawLine(const Mat3&, Vec2, float lineWidth, Rgba) instead")]]
79void drawLine(const Mat3& modelview, Vec2 end);
80
83[[deprecated("Use drawLine(const Mat3&, Vec2, float lineWidth, Rgba) instead")]]
84void drawLine(const Mat3& modelview, Vec2 end, Rgba color);
85
87void drawLine(Mat3 modelview, Vec2 end, float lineWidth, Rgba color);
88
89[[deprecated("Use drawEllipse(Mat3, float, float, float) instead")]]
91void drawEllipse(float xmid, float ymid, float width, float height, float startAngle = 0);
92
93void drawEllipse(Vec2, float width, float height, float startAngle = 0);
94
95void drawEllipse(const Mat3& modelview, float width, float height, float startAngle = 0);
96
97void drawEllipse(const Mat3& modelview, float width, float height, float startAngle, Rgba color);
98
100void drawCircle(Vec2, float radius, float startAngle = 0);
101
102void drawCircle(const Mat3& modelview, float radius, float startAngle);
103
122void drawCircle(const Mat3& modelview, float radius, float startAngle, Rgba color);
123
124void drawCircle(const Mat3& modelview, float radius);
125
127void drawCircle(Mat3 modelview, float radius, Rgba color);
128
130void drawCircle(const Mat3& modelview, Rgba color);
131
132[[deprecated("Use drawCircle instead")]]
134void drawPoint(double x, double y);
135
138
139[[deprecated("Use drawTriangle(Vec2, Vec2, Vec2) instead")]]
141void drawTriangle(double A_x, double A_y, double B_x, double B_y, double C_x, double C_y);
142
147
150[[deprecated("Use drawRect(const Mat3&, Vec2, Color) instead")]]
151void drawRect(double xposition, double yposition, double width, double height);
152
156void drawRect(Vec2 position, Vec2 size);
157
161void drawRect(const Mat3& modelview, Vec2 size, Rgb);
162
166void drawRect(Mat3 modelview, Vec2 size, Rgba color);
167
169void drawRectOutline(Mat3 modelview, Vec2 size, float lineWidth, Rgba color);
170
179void drawSquare(const Mat3& modelview, Rgba color);
180
193void drawSquareOutline(Mat3 modelview, float lineWidth, Rgba color);
194
195template <class Vect> void drawRect(Vect pos, Vect size) {
196 drawRect(pos.x, pos.y, size.x, size.y);
197}
198
199} // namespace jngl
Contains jngl::Rgba class.
Contains jngl::Vec2 class.
3x3 matrix
Definition Mat3.hpp:18
Object representing a RGB color, new version of jngl::Color (which will be deprecated in the future)
Definition Rgb.hpp:16
Object representing a RGBA color.
Definition Rgba.hpp:22
Two-dimensional vector.
Definition Vec2.hpp:36
JNGL's main namespace.
void drawRectOutline(Mat3 modelview, Vec2 size, float lineWidth, Rgba color)
Draws the outline of a rectangle (so □ instead of ■) of size centered at (0, 0) in color.
void drawSquare(const Mat3 &modelview, Rgba color)
Draws a (filled) square of size 1x1 centered at (0, 0) with the specified color.
void drawTriangle(Vec2 a, Vec2 b, Vec2 c)
Draws the triangle a -> b -> c.
void setAlpha(uint8_t alpha)
Sets the alpha value which should be used to draw primitives (0 = fully transparent,...
void pushAlpha(unsigned char alpha)
void drawSquareOutline(Mat3 modelview, float lineWidth, Rgba color)
Draws the outline of a square (so □ instead of ■) of size 1x1 centered at (0, 0) with the specified c...
void setColor(Rgb)
Sets the color which should be used to draw primitives.
void drawEllipse(float xmid, float ymid, float width, float height, float startAngle=0)
void drawPoint(double x, double y)
void setLineWidth(float width)
jngl::Mat3 modelview()
Returns a copy of the global ModelView matrix.
void drawCircle(Vec2, float radius, float startAngle=0)
Angles in radian.
void drawLine(Vec2 start, Vec2 end)
Draws a line from start to end, the width can be set using setLineWidth.
void popAlpha()
void drawRect(double xposition, double yposition, double width, double height)
Draws a rectangle at { xposition, yposition }.