| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | 
							- /*
 
-  * GraphicalPrimitiveCanvas.cpp, part of VCMI engine
 
-  *
 
-  * Authors: listed in file AUTHORS in main folder
 
-  *
 
-  * License: GNU General Public License v2.0 or later
 
-  * Full text of license available in license.txt file, in main folder
 
-  *
 
-  */
 
- #include "StdInc.h"
 
- #include "GraphicalPrimitiveCanvas.h"
 
- #include "../render/Canvas.h"
 
- GraphicalPrimitiveCanvas::GraphicalPrimitiveCanvas(Rect dimensions)
 
- {
 
- 	pos = dimensions + pos.topLeft();
 
- }
 
- void GraphicalPrimitiveCanvas::showAll(Canvas & to)
 
- {
 
- 	auto const & translatePoint = [this](const Point & input){
 
- 		int x = input.x < 0 ? pos.w + input.x : input.x;
 
- 		int y = input.y < 0 ? pos.h + input.y : input.y;
 
- 		return Point(x,y);
 
- 	};
 
- 	for (auto const & entry : primitives)
 
- 	{
 
- 		switch (entry.type)
 
- 		{
 
- 			case PrimitiveType::LINE:
 
- 			{
 
- 				to.drawLine(pos.topLeft() + translatePoint(entry.a), pos.topLeft() + translatePoint(entry.b), entry.color, entry.color);
 
- 				break;
 
- 			}
 
- 			case PrimitiveType::FILLED_BOX:
 
- 			{
 
- 				to.drawColorBlended(Rect(pos.topLeft() + translatePoint(entry.a), translatePoint(entry.b)), entry.color);
 
- 				break;
 
- 			}
 
- 			case PrimitiveType::RECTANGLE:
 
- 			{
 
- 				to.drawBorder(Rect(pos.topLeft() + translatePoint(entry.a), translatePoint(entry.b)), entry.color);
 
- 				break;
 
- 			}
 
- 		}
 
- 	}
 
- }
 
- void GraphicalPrimitiveCanvas::addLine(const Point & from, const Point & to, const ColorRGBA & color)
 
- {
 
- 	primitives.push_back({color, from, to, PrimitiveType::LINE});
 
- }
 
- void GraphicalPrimitiveCanvas::addBox(const Point & topLeft, const Point & size, const ColorRGBA & color)
 
- {
 
- 	primitives.push_back({color, topLeft, size, PrimitiveType::FILLED_BOX});
 
- }
 
- void GraphicalPrimitiveCanvas::addRectangle(const Point & topLeft, const Point & size, const ColorRGBA & color)
 
- {
 
- 	primitives.push_back({color, topLeft, size, PrimitiveType::RECTANGLE});
 
- }
 
- TransparentFilledRectangle::TransparentFilledRectangle(Rect position, ColorRGBA color) :
 
- 	GraphicalPrimitiveCanvas(position)
 
- {
 
- 	addBox(Point(0,0), Point(-1, -1), color);
 
- }
 
- TransparentFilledRectangle::TransparentFilledRectangle(Rect position, ColorRGBA color, ColorRGBA colorLine, int width) :
 
- 	GraphicalPrimitiveCanvas(position)
 
- {
 
- 	addBox(Point(0,0), Point(-1, -1), color);
 
- 	for (int i = 0; i < width; ++i)
 
- 		addRectangle(Point(i,i), Point(-1-i*2, -1-i*2), colorLine);
 
- }
 
- SimpleLine::SimpleLine(Point pos1, Point pos2, ColorRGBA color) :
 
- 	GraphicalPrimitiveCanvas(Rect(pos1, pos2 - pos1))
 
- {
 
- 	addLine(Point(0,0), Point(-1, -1), color);
 
- }
 
 
  |