Author: jghali
Date: Sun Dec 11 18:28:10 2016
New Revision: 21638

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=21638
Log:
avoid unnecessary function calls when layouting drop caps

Modified:
    trunk/Scribus/scribus/pageitem_textframe.cpp

Modified: trunk/Scribus/scribus/pageitem_textframe.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=21638&path=/trunk/Scribus/scribus/pageitem_textframe.cpp
==============================================================================
--- trunk/Scribus/scribus/pageitem_textframe.cpp        (original)
+++ trunk/Scribus/scribus/pageitem_textframe.cpp        Sun Dec 11 18:28:10 2016
@@ -1716,6 +1716,7 @@
                        if (DropCmode)
                        {
                                // drop caps are wider...
+                               GlyphCluster& glyphCluster = 
current.glyphs[currentIndex];
                                if (HasObject)
                                {
                                //      double itemHeight = 
currentObject->height() + currentObject->lineWidth();
@@ -1729,16 +1730,16 @@
                                        asce = currentObjectBox.height();
                                        wide = currentObjectBox.width();
                                        realAsce = calculateLineSpacing (style, 
this) * DropLines;
-                                       
current.glyphs[currentIndex].setScaleH(current.glyphs[currentIndex].scaleH() / 
current.glyphs[currentIndex].scaleV());
-                                       
current.glyphs[currentIndex].setScaleV(realAsce / itemHeight);
-                                       
current.glyphs[currentIndex].setScaleH(current.glyphs[currentIndex].scaleH() * 
current.glyphs[currentIndex].scaleV());
-                                       wide *= 
current.glyphs[currentIndex].scaleH();
+                                       
glyphCluster.setScaleH(glyphCluster.scaleH() / glyphCluster.scaleV());
+                                       glyphCluster.setScaleV(realAsce / 
itemHeight);
+                                       
glyphCluster.setScaleH(glyphCluster.scaleH() * glyphCluster.scaleV());
+                                       wide *= glyphCluster.scaleH();
                                }
                                else
                                {
                                        double realCharHeight = 0.0;
                                        wide = 0.0; realAsce = 0.0;
-                                       foreach (const GlyphLayout& gl, 
current.glyphs[currentIndex].glyphs()) {
+                                       foreach (const GlyphLayout& gl, 
glyphCluster.glyphs()) {
                                                GlyphMetrics gm;
                                                gm = font.glyphBBox(gl.glyph, 
charStyle.fontSize() / 10.0);
                                                realCharHeight = 
qMax(realCharHeight, gm.ascent + gm.descent);
@@ -1751,17 +1752,17 @@
                                        if (realCharHeight == 0)
                                                realCharHeight = 
font.height(style.charStyle().fontSize() / 10.0);
                                        asce = font.ascent(hlcsize10);
-                                       
current.glyphs[currentIndex].setScaleH(current.glyphs[currentIndex].scaleH() / 
current.glyphs[currentIndex].scaleV());
-                                       
current.glyphs[currentIndex].setScaleV(realAsce / realCharHeight);
-                                       
current.glyphs[currentIndex].setScaleH(current.glyphs[currentIndex].scaleH() * 
current.glyphs[currentIndex].scaleV());
-                                       current.glyphs[currentIndex].xoffset -= 
0.5; //drop caps are always to far from column left edge
+                                       
glyphCluster.setScaleH(glyphCluster.scaleH() / glyphCluster.scaleV());
+                                       glyphCluster.setScaleV(realAsce / 
realCharHeight);
+                                       
glyphCluster.setScaleH(glyphCluster.scaleH() * glyphCluster.scaleV());
+                                       glyphCluster.xoffset -= 0.5; //drop 
caps are always to far from column left edge
                                }
                                // This is to mimic pre-boxes branches in case 
first character of paragraph is a space
                                // If we don't do this, paragraph offset will 
not apply correctly to first line
-                               if ((current.glyphs[currentIndex].scaleH() == 
0.0) || (current.glyphs[currentIndex].scaleV() == 0.0))
-                               {
-                                       
current.glyphs[currentIndex].setScaleH(1.0);
-                                       
current.glyphs[currentIndex].setScaleV(1.0);
+                               if ((glyphCluster.scaleH() == 0.0) || 
(glyphCluster.scaleV() == 0.0))
+                               {
+                                       glyphCluster.setScaleH(1.0);
+                                       glyphCluster.setScaleV(1.0);
                                        wide = 0.0;
                                }
                                desc = realDesc = 0;


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

Reply via email to