[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [marble] src/lib/marble: Decide early to not render stuff that is too small
From: Torsten Rahn <torsten.rahn () lge ! com>
Date: 2015-11-01 1:45:41
Message-ID: E1ZshiH-00025H-7z () scm ! kde ! org
[Download RAW message or body]
Git commit a8a427ab4a61a640c40e693dc0f36f005700cedf by Torsten Rahn.
Committed on 01/11/2015 at 01:44.
Pushed by rahn into branch 'master'.
Decide early to not render stuff that is too small
to be relevant.
M +5 -6 src/lib/marble/ViewportParams.cpp
M +2 -2 src/lib/marble/ViewportParams.h
M +4 -0 src/lib/marble/geodata/graphicsitem/GeoLineStringGraphicsItem.cpp
M +6 -0 src/lib/marble/geodata/graphicsitem/GeoPolygonGraphicsItem.cpp
http://commits.kde.org/marble/a8a427ab4a61a640c40e693dc0f36f005700cedf
diff --git a/src/lib/marble/ViewportParams.cpp b/src/lib/marble/ViewportParams.cpp
index a8b06d2..a3ae0fa 100644
--- a/src/lib/marble/ViewportParams.cpp
+++ b/src/lib/marble/ViewportParams.cpp
@@ -352,17 +352,16 @@ qreal ViewportParams::angularResolution() const
return d->m_angularResolution;
}
-bool ViewportParams::resolves ( const GeoDataLatLonBox &latLonBox ) const
+bool ViewportParams::resolves ( const GeoDataLatLonBox &latLonBox, qreal pixel ) \
const {
- return latLonBox.width() + latLonBox.height() > 2.0 * angularResolution();
+ return latLonBox.width() + latLonBox.height() > pixel * angularResolution();
}
-bool ViewportParams::resolves ( const GeoDataLatLonAltBox &latLonAltBox ) const
+bool ViewportParams::resolves ( const GeoDataLatLonAltBox &latLonAltBox, qreal \
pixel, qreal altitude ) const {
- return latLonAltBox.width() + latLonAltBox.height() > 2.0 * \
angularResolution()
- || latLonAltBox.maxAltitude() - latLonAltBox.minAltitude() > 10000;
-
+ return latLonAltBox.width() + latLonAltBox.height() > pixel * \
angularResolution() + || latLonAltBox.maxAltitude() - \
latLonAltBox.minAltitude() > altitude; }
bool ViewportParams::resolves ( const GeoDataCoordinates &coord1,
diff --git a/src/lib/marble/ViewportParams.h b/src/lib/marble/ViewportParams.h
index 09aeecb..3a9a3b5 100644
--- a/src/lib/marble/ViewportParams.h
+++ b/src/lib/marble/ViewportParams.h
@@ -76,9 +76,9 @@ class MARBLE_EXPORT ViewportParams
// represent a single point on the screen already.
// See angularResolution()
- bool resolves ( const GeoDataLatLonBox &latLonBox ) const;
+ bool resolves ( const GeoDataLatLonBox &latLonBox, qreal pixel = 2.0 ) const;
- bool resolves ( const GeoDataLatLonAltBox &latLonAltBox ) const;
+ bool resolves ( const GeoDataLatLonAltBox &latLonAltBox, qreal pixel = 2.0, \
qreal altitude = 10000.0 ) const;
// Determines whether two points are located enough apart so that it makes
// sense to display them as distinct points. If this is not the case
diff --git a/src/lib/marble/geodata/graphicsitem/GeoLineStringGraphicsItem.cpp \
b/src/lib/marble/geodata/graphicsitem/GeoLineStringGraphicsItem.cpp index \
acbbc9f..b5a1ad7 100644
--- a/src/lib/marble/geodata/graphicsitem/GeoLineStringGraphicsItem.cpp
+++ b/src/lib/marble/geodata/graphicsitem/GeoLineStringGraphicsItem.cpp
@@ -54,6 +54,10 @@ const GeoDataLatLonAltBox& \
GeoLineStringGraphicsItem::latLonAltBox() const
void GeoLineStringGraphicsItem::paint( GeoPainter* painter, const ViewportParams* \
viewport ) {
+ if ( ( !viewport->resolves( m_lineString->latLonAltBox(), 2) ) ) {
+ return;
+ }
+
LabelPositionFlags labelPositionFlags = NoLabel;
painter->save();
diff --git a/src/lib/marble/geodata/graphicsitem/GeoPolygonGraphicsItem.cpp \
b/src/lib/marble/geodata/graphicsitem/GeoPolygonGraphicsItem.cpp index \
1b94a92..d9d781e 100644
--- a/src/lib/marble/geodata/graphicsitem/GeoPolygonGraphicsItem.cpp
+++ b/src/lib/marble/geodata/graphicsitem/GeoPolygonGraphicsItem.cpp
@@ -249,6 +249,12 @@ void GeoPolygonGraphicsItem::paint( GeoPainter* painter, const \
ViewportParams* v
if ( isBuildingFrame || isBuildingRoof ) {
+ if ((m_polygon && \
!viewport->resolves(m_polygon->outerBoundary().latLonAltBox(), 4)) + || \
(m_ring && !viewport->resolves(m_ring->latLonAltBox(), 4))) { + \
painter->restore(); + return;
+ }
+
bool drawAccurate3D = false;
bool isCameraAboveBuilding = false;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic