1#ifndef GAME_EDITOR_QUADART_H
2#define GAME_EDITOR_QUADART_H
3
4#include <base/types.h>
5
6#include <engine/image.h>
7
8#include <game/editor/mapitems/layer_quads.h>
9#include <game/mapitems.h>
10
11#include <memory>
12#include <optional>
13
14class CQuadArtParameters
15{
16public:
17 int m_ImagePixelSize;
18 int m_QuadPixelSize;
19 bool m_Centralize;
20 bool m_Optimize;
21 char m_aFilename[IO_MAX_PATH_LENGTH];
22};
23
24class CQuadArt
25{
26public:
27 CQuadArt(CQuadArtParameters Parameters, CImageInfo &&Img);
28 ~CQuadArt();
29 bool Create(std::shared_ptr<CLayerQuads> &pQuadLayer);
30
31private:
32 ivec2 GetOptimizedQuadSize(const ColorRGBA &Pixel, const ivec2 &Pos);
33 void MarkPixelAsVisited(const ivec2 &Pos, const ivec2 &Size);
34
35 size_t FindSuperPixelSize(const ColorRGBA &Pixel, const ivec2 &Pos, size_t CurrentSize);
36
37 ColorRGBA GetPixelClamped(const ivec2 &Pos) const;
38 bool IsPixelOptimizable(const ivec2 &Pos, const ColorRGBA &Pixel) const;
39
40 CQuad CreateNewQuad(const vec2 &Pos, const ivec2 &Size, const ColorRGBA &Color) const;
41
42 CQuadArtParameters m_Parameters;
43 CImageInfo m_Img;
44 std::vector<bool> m_vVisitedPixels;
45};
46#endif
47