[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdeedu/marble
From:       Inge Wallin <inge () lysator ! liu ! se>
Date:       2008-05-31 23:52:48
Message-ID: 1212277968.322915.23246.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 815031 by ingwa:

Bound the top and bottom values of the rectangle

 M  +6 -0      ChangeLog  
 M  +16 -6     src/lib/Projections/EquirectProjectionHelper.cpp  


--- trunk/KDE/kdeedu/marble/ChangeLog #815030:815031
@@ -1,3 +1,9 @@
+2008-06-01  Inge Wallin  <inge@lysator.liu.se>
+
+	Fix issue with paintBase
+	* src/lib/Projections/EquirectProjectionHelper.cpp (paintBase):
+	Bound the top and bottom values of the rectangle.
+
 2008-06-01  Torsten Rahn  <rahn@kde.org> 
 
     * src/lib/TextureTile.cpp:
--- trunk/KDE/kdeedu/marble/src/lib/Projections/EquirectProjectionHelper.cpp #815030:815031
@@ -34,10 +34,13 @@
 					  QBrush         &brush,
 					  bool            antialiasing )
 {
+    // Convenience variables
     int  radius = viewport->radius();
+    int  width  = viewport->width();
+    int  height = viewport->height();
 
+    // Igor, prepare the painter!
     painter->setRenderHint( QPainter::Antialiasing, antialiasing );
-
     painter->setPen( pen );
     painter->setBrush( brush );
 
@@ -46,11 +49,18 @@
     double  centerLat;
     viewport->centerCoordinates( centerLon, centerLat );
 
-    // yCenterOffset is the number of pixels that the 
-    int yCenterOffset = (int)( centerLat * (double)( 2 * radius ) / M_PI );
-    int yTop          = viewport->height() / 2 - radius + yCenterOffset;
+    int yCenterOffset = (int)(centerLat * (double)( 2 * radius ) / M_PI );
+    int yTop          = height / 2 - radius + yCenterOffset;
+    int yBottom       = yTop + 2 * radius;
 
-    painter->drawRect( 0, yTop, viewport->width(), 2 * radius);
+    // Don't let the active area be outside the image, and also let a
+    // thin strip 25 pixels wide be outside it.
+    if ( yTop < 0 )
+	yTop = 0;
+    if ( yBottom > height )
+	yBottom =  height;
+
+    painter->drawRect( 0, yTop, width, yBottom - yTop );
 }
 
 
@@ -66,7 +76,7 @@
     double  centerLat;
     viewport->centerCoordinates( centerLon, centerLat );
 
-    int yCenterOffset = (int)((double)( 2 * radius ) / M_PI * centerLat);
+    int yCenterOffset = (int)( centerLat * (double)( 2 * radius ) / M_PI );
     int yTop          = height / 2 - radius + yCenterOffset;
     int yBottom       = yTop + 2 * radius;
 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic