This repository has been archived on 2025-03-20. You can view files and clone it, but cannot push or open issues or pull requests.
The-Powder-Toy/src/gui/game/TriangleBrush.h
Tamás Bálint Misius 2960e0f58f
Fix some deprecation warnings
Namely:

 - [[deprecated("Use operator+(Vec2)")]]
 - [[deprecated("Use operator-(Vec2)")]]
 - [[deprecated("Use video")]]
 - [[deprecated("Use persistentVideo")]]
 - [[deprecated("Use wrapVideo")]]
2023-04-29 14:44:27 +02:00

39 lines
780 B
C++

#pragma once
#include "Brush.h"
#include <cmath>
class TriangleBrush: public Brush
{
public:
virtual ~TriangleBrush() override = default;
std::unique_ptr<unsigned char []> GenerateBitmap() const override
{
ui::Point size = radius * 2 + Vec2{ 1, 1 };
auto bitmap = std::make_unique<unsigned char []>(size.X * size.Y);
int rx = radius.X;
int ry = radius.Y;
for(int x = -rx; x <= rx; x++)
{
for(int y = -ry; y <= ry; y++)
{
if ((abs((rx+2*x)*ry+rx*y) + abs(2*rx*(y-ry)) + abs((rx-2*x)*ry+rx*y))<=(4*rx*ry))
{
bitmap[(y+ry)*(size.X)+x+rx] = 255;
}
else
{
bitmap[(y+ry)*(size.X)+x+rx] = 0;
}
}
}
return bitmap;
}
std::unique_ptr<Brush> Clone() const override
{
return std::make_unique<TriangleBrush>(*this);
}
};