Author: jghali
Date: Sun Dec 11 19:54:01 2016
New Revision: 21640

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=21640
Log:
exit early in grid and guide drawing functions when possible

Modified:
    trunk/Scribus/scribus/canvas.cpp

Modified: trunk/Scribus/scribus/canvas.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=21640&path=/trunk/Scribus/scribus/canvas.cpp
==============================================================================
--- trunk/Scribus/scribus/canvas.cpp    (original)
+++ trunk/Scribus/scribus/canvas.cpp    Sun Dec 11 19:54:01 2016
@@ -1923,6 +1923,9 @@
  */
 void Canvas::DrawPageGridSub(ScPainter *p, ScPage *page, QRectF clip)
 {
+       if (!m_doc->guidesPrefs().gridShown)
+               return;
+
        p->save();
        FPointArray PoLine;
        getClipPathForPages(&PoLine);
@@ -1935,79 +1938,78 @@
        p->setFillMode(ScPainter::None);
        p->setStrokeMode(ScPainter::Solid);
        p->setPen(Qt::black, lineWidth, Qt::SolidLine, Qt::FlatCap, 
Qt::MiterJoin);
-       if (m_doc->guidesPrefs().gridShown)
-       {
-               double lowerBx = qMax(clip.x() / m_viewMode.scale + 
m_doc->minCanvasCoordinate.x() - page->xOffset(), 0.0);
-               double lowerBy = qMax(clip.y() / m_viewMode.scale + 
m_doc->minCanvasCoordinate.y() - page->yOffset(), 0.0);
-               double highBx = qMin(lowerBx + clip.width() / m_viewMode.scale, 
pageWidth);
-               double highBy = qMin(lowerBy + clip.height() / 
m_viewMode.scale, pageHeight);
-               if (m_viewMode.scale > 0.49)
-               {
-                       if (m_doc->guidesPrefs().gridType == 0)
-                       {
-                               double i,start;
-                               i = m_doc->guidesPrefs().majorGridSpacing;
-                               p->setPen(m_doc->guidesPrefs().majorGridColor, 
lineWidth, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin);
-                               start = floor(lowerBy / i);
-                               start *= i;
-                               for (double b = start; b <= highBy; b+=i)
+
+       double lowerBx = qMax(clip.x() / m_viewMode.scale + 
m_doc->minCanvasCoordinate.x() - page->xOffset(), 0.0);
+       double lowerBy = qMax(clip.y() / m_viewMode.scale + 
m_doc->minCanvasCoordinate.y() - page->yOffset(), 0.0);
+       double highBx = qMin(lowerBx + clip.width() / m_viewMode.scale, 
pageWidth);
+       double highBy = qMin(lowerBy + clip.height() / m_viewMode.scale, 
pageHeight);
+       if (m_viewMode.scale > 0.49)
+       {
+               if (m_doc->guidesPrefs().gridType == 0)
+               {
+                       double i,start;
+                       i = m_doc->guidesPrefs().majorGridSpacing;
+                       p->setPen(m_doc->guidesPrefs().majorGridColor, 
lineWidth, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin);
+                       start = floor(lowerBy / i);
+                       start *= i;
+                       for (double b = start; b <= highBy; b+=i)
+                       {
+                               p->drawLine(FPoint(qMax(lowerBx, 0.0), b), 
FPoint(qMin(pageWidth, highBx), b));
+                       }
+                       start=floor(lowerBx/i);
+                       start*=i;
+                       for (double b = start; b <= highBx; b+=i)
+                       {
+                               p->drawLine(FPoint(b, qMax(lowerBy, 0.0)), 
FPoint(b, qMin(pageHeight, highBy)));
+                       }
+                       i = m_doc->guidesPrefs().minorGridSpacing;
+                       p->setPen(m_doc->guidesPrefs().minorGridColor, 
lineWidth, Qt::DotLine, Qt::FlatCap, Qt::MiterJoin);
+                       start = floor(lowerBy / i);
+                       start *= i;
+                       for (double b = start; b <= highBy; b+=i)
+                       {
+                               p->drawLine(FPoint(qMax(lowerBx, 0.0), b), 
FPoint(qMin(pageWidth, highBx), b));
+                       }
+                       start=floor(lowerBx/i);
+                       start*=i;
+                       for (double b = start; b <= highBx; b+=i)
+                       {
+                               p->drawLine(FPoint(b, qMax(lowerBy, 0.0)), 
FPoint(b, qMin(pageHeight, highBy)));
+                       }
+               }
+               else if (m_doc->guidesPrefs().gridType == 1)
+               {
+                       double i, startX, startY;
+                       i = m_doc->guidesPrefs().minorGridSpacing;
+                       p->setPen(m_doc->guidesPrefs().minorGridColor, 3.0 / 
m_viewMode.scale, Qt::SolidLine, Qt::RoundCap, Qt::MiterJoin);
+                       startY = floor(lowerBy / i);
+                       startY *= i;
+                       startX = floor(lowerBx / i);
+                       startX *= i;
+                       for (double b = startY; b <= highBy; b += i)
+                       {
+                               for (double bb = startX; bb <= highBx; bb += i)
                                {
-                                       p->drawLine(FPoint(qMax(lowerBx, 0.0), 
b), FPoint(qMin(pageWidth, highBx), b));
+                                       p->drawLine(FPoint(bb, b), FPoint(bb, 
b));
                                }
-                               start=floor(lowerBx/i);
-                               start*=i;
-                               for (double b = start; b <= highBx; b+=i)
+                       }
+                       i = m_doc->guidesPrefs().majorGridSpacing;
+                       p->setPen(m_doc->guidesPrefs().majorGridColor, 
lineWidth * 2, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin);
+                       startY = floor(lowerBy / i);
+                       startY *= i;
+                       startX = floor(lowerBx / i);
+                       startX *= i;
+                       for (double b = startY; b <= highBy; b += i)
+                       {
+                               for (double bb = startX; bb <= highBx; bb += i)
                                {
-                                       p->drawLine(FPoint(b, qMax(lowerBy, 
0.0)), FPoint(b, qMin(pageHeight, highBy)));
+                                       p->drawLine(FPoint(bb - 4, b), 
FPoint(bb + 4, b));
+                                       p->drawLine(FPoint(bb, b - 4), 
FPoint(bb, b + 4));
                                }
-                               i = m_doc->guidesPrefs().minorGridSpacing;
-                               p->setPen(m_doc->guidesPrefs().minorGridColor, 
lineWidth, Qt::DotLine, Qt::FlatCap, Qt::MiterJoin);
-                               start = floor(lowerBy / i);
-                               start *= i;
-                               for (double b = start; b <= highBy; b+=i)
-                               {
-                                       p->drawLine(FPoint(qMax(lowerBx, 0.0), 
b), FPoint(qMin(pageWidth, highBx), b));
-                               }
-                               start=floor(lowerBx/i);
-                               start*=i;
-                               for (double b = start; b <= highBx; b+=i)
-                               {
-                                       p->drawLine(FPoint(b, qMax(lowerBy, 
0.0)), FPoint(b, qMin(pageHeight, highBy)));
-                               }
-                       }
-                       else if (m_doc->guidesPrefs().gridType == 1)
-                       {
-                               double i, startX, startY;
-                               i = m_doc->guidesPrefs().minorGridSpacing;
-                               p->setPen(m_doc->guidesPrefs().minorGridColor, 
3.0 / m_viewMode.scale, Qt::SolidLine, Qt::RoundCap, Qt::MiterJoin);
-                               startY = floor(lowerBy / i);
-                               startY *= i;
-                               startX = floor(lowerBx / i);
-                               startX *= i;
-                               for (double b = startY; b <= highBy; b += i)
-                               {
-                                       for (double bb = startX; bb <= highBx; 
bb += i)
-                                       {
-                                               p->drawLine(FPoint(bb, b), 
FPoint(bb, b));
-                                       }
-                               }
-                               i = m_doc->guidesPrefs().majorGridSpacing;
-                               p->setPen(m_doc->guidesPrefs().majorGridColor, 
lineWidth * 2, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin);
-                               startY = floor(lowerBy / i);
-                               startY *= i;
-                               startX = floor(lowerBx / i);
-                               startX *= i;
-                               for (double b = startY; b <= highBy; b += i)
-                               {
-                                       for (double bb = startX; bb <= highBx; 
bb += i)
-                                       {
-                                               p->drawLine(FPoint(bb - 4, b), 
FPoint(bb + 4, b));
-                                               p->drawLine(FPoint(bb, b - 4), 
FPoint(bb, b + 4));
-                                       }
-                               }
-                       }
-               }
-       }
+                       }
+               }
+       }
+
        p->setAntialiasing(true);
        p->endLayer();
        p->restore();
@@ -2015,6 +2017,9 @@
 
 void Canvas::DrawPageGrid(ScPainter *p, QRectF clip, bool master)
 {
+       if (!m_doc->guidesPrefs().gridShown)
+               return;
+
        if (master)
        {
                ScPage *page = m_doc->currentPage();
@@ -2046,6 +2051,9 @@
  */
 void Canvas::DrawPageGuidesSub(ScPainter *p, ScPage *page)
 {
+       if (!m_doc->guidesPrefs().guidesShown)
+               return;
+
        p->save();
        p->setAntialiasing(false);
        p->translate(page->xOffset(), page->yOffset());
@@ -2053,14 +2061,16 @@
        p->setFillMode(ScPainter::None);
        p->setStrokeMode(ScPainter::Solid);
        p->setPen(Qt::black, lineWidth, Qt::SolidLine, Qt::FlatCap, 
Qt::MiterJoin);
-       if (m_doc->guidesPrefs().guidesShown)
-               page->guides.drawPage(p, m_doc, lineWidth);
+       page->guides.drawPage(p, m_doc, lineWidth);
        p->setAntialiasing(true);
        p->restore();
 }
 
 void Canvas::DrawPageGuides(ScPainter *p, QRectF clip, bool master)
 {
+       if (!m_doc->guidesPrefs().guidesShown)
+               return;
+
        if (master)
        {
                ScPage *page = m_doc->currentPage();


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to