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-2025 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("Use drawRect instead")]]
47void setLineWidth(float width);
48
50void drawLine(Vec2 start, Vec2 end);
51
52[[deprecated("Use drawLine(Vec2, Vec2) instead")]]
54void drawLine(double xstart, double ystart, double xend, double yend);
55
57void drawLine(Mat3 modelview, Vec2 start, Vec2 end);
58
60void drawLine(const Mat3& modelview, Vec2 end);
61
63void drawLine(const Mat3& modelview, Vec2 end, Rgba color);
64
65[[deprecated("Use drawEllipse(Mat3, float, float, float) instead")]]
67void drawEllipse(float xmid, float ymid, float width, float height, float startAngle = 0);
68
69void drawEllipse(Vec2, float width, float height, float startAngle = 0);
70
71void drawEllipse(Mat3 modelview, float width, float height, float startAngle = 0);
72
73void drawEllipse(Mat3 modelview, float width, float height, float startAngle, Rgba color);
74
76void drawCircle(Vec2, float radius, float startAngle = 0);
77
78void drawCircle(Mat3 modelview, float radius, float startAngle);
79
98void drawCircle(Mat3 modelview, float radius, float startAngle, Rgba color);
99
100void drawCircle(Mat3 modelview, float radius);
101
103void drawCircle(Mat3 modelview, float radius, Rgba color);
104
107
108[[deprecated("Use drawCircle instead")]]
110void drawPoint(double x, double y);
111
114
115[[deprecated("Use drawTriangle(Vec2, Vec2, Vec2) instead")]]
117void drawTriangle(double A_x, double A_y, double B_x, double B_y, double C_x, double C_y);
118
123
126[[deprecated("Use drawRect(const Mat3&, Vec2, Color) instead")]]
127void drawRect(double xposition, double yposition, double width, double height);
128
132void drawRect(Vec2 position, Vec2 size);
133
137void drawRect(const Mat3& modelview, Vec2 size, Rgb);
138
142void drawRect(Mat3 modelview, Vec2 size, Rgba color);
143
152void drawSquare(const Mat3& modelview, Rgba color);
153
163void drawSquareOutline(Mat3 modelview, float lineWidth, Rgba color);
164
165template <class Vect> void drawRect(Vect pos, Vect size) {
166 drawRect(pos.x, pos.y, size.x, size.y);
167}
168
169} // 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:15
Object representing a RGBA color.
Definition Rgba.hpp:22
Two-dimensional vector.
Definition Vec2.hpp:36
JNGL's main namespace.
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 }.