blob: 719bd4283ef2a15e76b2d7d4e3776a5941b25416 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
/*
* maprenderer.cpp
* Copyright 2011, Thorbjørn Lindeijer <thorbjorn@lindeijer.nl>
*
* This file is part of Tiled.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "maprenderer.h"
#include <QVector2D>
using namespace Tiled;
/**
* Converts a line running from \a start to \a end to a polygon which
* extends 5 pixels from the line in all directions.
*/
QPolygonF MapRenderer::lineToPolygon(const QPointF &start, const QPointF &end)
{
QPointF direction = QVector2D(end - start).normalized().toPointF();
QPointF perpendicular(-direction.y(), direction.x());
const qreal thickness = 5.0f; // 5 pixels on each side
direction *= thickness;
perpendicular *= thickness;
QPolygonF polygon(4);
polygon[0] = start + perpendicular - direction;
polygon[1] = start - perpendicular - direction;
polygon[2] = end - perpendicular + direction;
polygon[3] = end + perpendicular + direction;
return polygon;
}
|