mirror of
https://github.com/tumic0/GPXSee.git
synced 2024-11-24 11:45:53 +01:00
Moved all the map bounds checking where it belongs
This commit is contained in:
parent
179f2f1451
commit
5bdc263cda
@ -738,11 +738,14 @@ void MapView::setBackgroundColor(const QColor &color)
|
|||||||
void MapView::drawBackground(QPainter *painter, const QRectF &rect)
|
void MapView::drawBackground(QPainter *painter, const QRectF &rect)
|
||||||
{
|
{
|
||||||
if (_showMap) {
|
if (_showMap) {
|
||||||
if (_opacity < 1.0) {
|
QRectF ir = rect.intersected(_map->bounds());
|
||||||
|
|
||||||
|
if (_opacity < 1.0 || ir != rect)
|
||||||
painter->fillRect(rect, _backgroundColor);
|
painter->fillRect(rect, _backgroundColor);
|
||||||
|
if (_opacity < 1.0)
|
||||||
painter->setOpacity(_opacity);
|
painter->setOpacity(_opacity);
|
||||||
}
|
|
||||||
_map->draw(painter, rect);
|
_map->draw(painter, ir);
|
||||||
} else
|
} else
|
||||||
painter->fillRect(rect, _backgroundColor);
|
painter->fillRect(rect, _backgroundColor);
|
||||||
}
|
}
|
||||||
|
@ -610,17 +610,12 @@ void OfflineMap::drawImage(QPainter *painter, const QRectF &rect)
|
|||||||
|
|
||||||
void OfflineMap::draw(QPainter *painter, const QRectF &rect)
|
void OfflineMap::draw(QPainter *painter, const QRectF &rect)
|
||||||
{
|
{
|
||||||
QRectF ir = rect.intersected(bounds());
|
|
||||||
|
|
||||||
if (ir != rect)
|
|
||||||
painter->fillRect(rect, _backgroundColor);
|
|
||||||
|
|
||||||
if (_ozf.isOpen())
|
if (_ozf.isOpen())
|
||||||
drawOZF(painter, ir);
|
drawOZF(painter, rect);
|
||||||
else if (_tileSize.isValid())
|
else if (_tileSize.isValid())
|
||||||
drawTiled(painter, ir);
|
drawTiled(painter, rect);
|
||||||
else
|
else
|
||||||
drawImage(painter, ir);
|
drawImage(painter, rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
QPointF OfflineMap::ll2xy(const Coordinates &c)
|
QPointF OfflineMap::ll2xy(const Coordinates &c)
|
||||||
|
@ -228,18 +228,14 @@ qreal OnlineMap::zoomOut()
|
|||||||
void OnlineMap::draw(QPainter *painter, const QRectF &rect)
|
void OnlineMap::draw(QPainter *painter, const QRectF &rect)
|
||||||
{
|
{
|
||||||
qreal scale = zoom2scale(_zoom);
|
qreal scale = zoom2scale(_zoom);
|
||||||
QRectF ir = rect.intersected(bounds());
|
|
||||||
|
|
||||||
if (ir != rect)
|
QPoint tile = mercator2tile(QPointF(rect.topLeft().x() * scale,
|
||||||
painter->fillRect(rect, _backgroundColor);
|
-rect.topLeft().y() * scale), _zoom);
|
||||||
|
QPoint tl = QPoint((int)floor(rect.left() / (qreal)TILE_SIZE)
|
||||||
QPoint tile = mercator2tile(QPointF(ir.topLeft().x() * scale,
|
* TILE_SIZE, (int)floor(rect.top() / TILE_SIZE) * TILE_SIZE);
|
||||||
-ir.topLeft().y() * scale), _zoom);
|
|
||||||
QPoint tl = QPoint((int)floor(ir.left() / (qreal)TILE_SIZE)
|
|
||||||
* TILE_SIZE, (int)floor(ir.top() / TILE_SIZE) * TILE_SIZE);
|
|
||||||
|
|
||||||
QList<Tile> tiles;
|
QList<Tile> tiles;
|
||||||
QSizeF s(ir.right() - tl.x(), ir.bottom() - tl.y());
|
QSizeF s(rect.right() - tl.x(), rect.bottom() - tl.y());
|
||||||
for (int i = 0; i < ceil(s.width() / TILE_SIZE); i++)
|
for (int i = 0; i < ceil(s.width() / TILE_SIZE); i++)
|
||||||
for (int j = 0; j < ceil(s.height() / TILE_SIZE); j++)
|
for (int j = 0; j < ceil(s.height() / TILE_SIZE); j++)
|
||||||
tiles.append(Tile(QPoint(tile.x() + i, tile.y() + j), _zoom));
|
tiles.append(Tile(QPoint(tile.x() + i, tile.y() + j), _zoom));
|
||||||
|
Loading…
Reference in New Issue
Block a user