mirror of
https://github.com/The-Powder-Toy/The-Powder-Toy.git
synced 2025-08-21 07:31:26 +02:00
Added triangle brush, fixes #47
This commit is contained in:
committed by
Simon Robertshaw
parent
3030d67516
commit
6e324c82e2
@@ -7,6 +7,7 @@
|
|||||||
#include "interface/Point.h"
|
#include "interface/Point.h"
|
||||||
#include "Brush.h"
|
#include "Brush.h"
|
||||||
#include "EllipseBrush.h"
|
#include "EllipseBrush.h"
|
||||||
|
#include "TriangleBrush.h"
|
||||||
#include "client/Client.h"
|
#include "client/Client.h"
|
||||||
#include "game/DecorationTool.h"
|
#include "game/DecorationTool.h"
|
||||||
#include "GameModelException.h"
|
#include "GameModelException.h"
|
||||||
@@ -222,6 +223,7 @@ void GameModel::BuildMenus()
|
|||||||
//Set default brush palette
|
//Set default brush palette
|
||||||
brushList.push_back(new EllipseBrush(ui::Point(4, 4)));
|
brushList.push_back(new EllipseBrush(ui::Point(4, 4)));
|
||||||
brushList.push_back(new Brush(ui::Point(4, 4)));
|
brushList.push_back(new Brush(ui::Point(4, 4)));
|
||||||
|
brushList.push_back(new TriangleBrush(ui::Point(4, 4)));
|
||||||
|
|
||||||
//Set default tools
|
//Set default tools
|
||||||
activeTools[0] = menuList[SC_POWDERS]->GetToolList()[0];
|
activeTools[0] = menuList[SC_POWDERS]->GetToolList()[0];
|
||||||
|
46
src/game/TriangleBrush.h
Normal file
46
src/game/TriangleBrush.h
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* TriangleBrush.h
|
||||||
|
*
|
||||||
|
* Created on: Jan 26, 2012
|
||||||
|
* Author: Savely Skresanov
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef TRIANGLEBRUSH_H_
|
||||||
|
#define TRIANGLEBRUSH_H_
|
||||||
|
|
||||||
|
#include <cmath>
|
||||||
|
#include "Brush.h"
|
||||||
|
|
||||||
|
class TriangleBrush: public Brush
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TriangleBrush(ui::Point size_):
|
||||||
|
Brush(size_)
|
||||||
|
{
|
||||||
|
SetRadius(size_);
|
||||||
|
};
|
||||||
|
virtual void GenerateBitmap()
|
||||||
|
{
|
||||||
|
if(bitmap)
|
||||||
|
delete[] bitmap;
|
||||||
|
bitmap = new 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* TRIANGLEBRUSH_H_ */
|
Reference in New Issue
Block a user