Plasma Engine  2.0
Loading...
Searching...
No Matches
Rasterization.h
1#pragma once
2
3#include <Foundation/Containers/Deque.h>
4#include <Foundation/Math/Vec3.h>
5#include <Utilities/UtilitiesDLL.h>
6
9{
10 enum Enum
11 {
14 };
15};
16
19{
20 enum Enum
21 {
24 };
25};
26
27namespace pl2DGridUtils
28{
30 using PL_RASTERIZED_POINT_CALLBACK = plCallbackResult::Enum (*)(plInt32, plInt32, void*);
31
33 using PL_RASTERIZED_BLOB_CALLBACK = plCallbackResult::Enum (*)(plInt32, plInt32, void*, plUInt8);
34
46 PL_UTILITIES_DLL plRasterizationResult::Enum ComputePointsOnLine(
47 plInt32 iStartX, plInt32 iStartY, plInt32 iEndX, plInt32 iEndY, PL_RASTERIZED_POINT_CALLBACK callback, void* pPassThrough = nullptr);
48
59 PL_UTILITIES_DLL plRasterizationResult::Enum ComputePointsOnLineConservative(plInt32 iStartX, plInt32 iStartY, plInt32 iEndX, plInt32 iEndY,
60 PL_RASTERIZED_POINT_CALLBACK callback, void* pPassThrough = nullptr, bool bVisitBothNeighbors = false);
61
68 PL_UTILITIES_DLL plRasterizationResult::Enum ComputePointsOnCircle(
69 plInt32 iStartX, plInt32 iStartY, plUInt32 uiRadius, PL_RASTERIZED_POINT_CALLBACK callback, void* pPassThrough = nullptr);
70
84 PL_UTILITIES_DLL plUInt32 FloodFill(
85 plInt32 iStartX, plInt32 iStartY, PL_RASTERIZED_POINT_CALLBACK callback, void* pPassThrough = nullptr, plDeque<plVec2I32>* pTempArray = nullptr);
86
88 PL_UTILITIES_DLL plUInt32 FloodFillDiag(
89 plInt32 iStartX, plInt32 iStartY, PL_RASTERIZED_POINT_CALLBACK callback, void* pPassThrough = nullptr, plDeque<plVec2I32>* pTempArray = nullptr);
90
92 enum plBlobType : plUInt8
93 {
94 Point1x1,
95 Cross3x3,
96 Block3x3,
97 Circle5x5,
98 Circle7x7,
99 Circle9x9,
100 Circle11x11,
101 Circle13x13,
102 Circle15x15,
103 };
104
115 PL_UTILITIES_DLL plRasterizationResult::Enum RasterizeBlob(
116 plInt32 iPosX, plInt32 iPosY, plBlobType type, PL_RASTERIZED_POINT_CALLBACK callback, void* pPassThrough = nullptr);
117
120 PL_UTILITIES_DLL plRasterizationResult::Enum RasterizeBlobWithDistance(
121 plInt32 iPosX, plInt32 iPosY, plBlobType type, PL_RASTERIZED_BLOB_CALLBACK callback, void* pPassThrough = nullptr);
122
131 PL_UTILITIES_DLL plRasterizationResult::Enum RasterizeCircle(
132 plInt32 iPosX, plInt32 iPosY, float fRadius, PL_RASTERIZED_POINT_CALLBACK callback, void* pPassThrough = nullptr);
133
134
146 PL_UTILITIES_DLL void ComputeVisibleArea(plInt32 iPosX, plInt32 iPosY, plUInt16 uiRadius, plUInt32 uiWidth, plUInt32 uiHeight,
147 PL_RASTERIZED_POINT_CALLBACK callback, void* pPassThrough = nullptr, plDynamicArray<plUInt8>* pTempArray = nullptr);
148
153 PL_UTILITIES_DLL void ComputeVisibleAreaInCone(plInt32 iPosX, plInt32 iPosY, plUInt16 uiRadius, const plVec2& vDirection, plAngle coneAngle,
154 plUInt32 uiWidth, plUInt32 uiHeight, PL_RASTERIZED_POINT_CALLBACK callback, void* pPassThrough = nullptr,
155 plDynamicArray<plUInt8>* pTempArray = nullptr);
156} // namespace pl2DGridUtils
Float wrapper struct for a safe usage and conversions of angles.
Definition Angle.h:10
Definition Deque.h:270
Definition DynamicArray.h:81
Enum values for success and failure. To be used by functions as return values mostly,...
Definition Rasterization.h:9
Enum
Definition Rasterization.h:11
@ Stop
The calling function should stop expanding in this direction (might mean it should abort entirely)
Definition Rasterization.h:12
@ Continue
The calling function should continue further.
Definition Rasterization.h:13
Enum values for the result of some rasterization functions.
Definition Rasterization.h:19
Enum
Definition Rasterization.h:21
@ Finished
The function rasterized all possible points.
Definition Rasterization.h:23
@ Aborted
The function was aborted before it reached the end.
Definition Rasterization.h:22