diff --git a/core/textpage.cpp b/core/textpage.cpp index ed643eea1..b72b39a8c 100644 --- a/core/textpage.cpp +++ b/core/textpage.cpp @@ -372,8 +372,8 @@ RegularAreaRect * TextPage::textArea ( TextSelection * sel) const } } #else - double scaleX = d->m_page->m_page->width(); - double scaleY = d->m_page->m_page->height(); + const double scaleX = d->m_page->m_page->width(); + const double scaleY = d->m_page->m_page->height(); NormalizedPoint startC = sel->start(); NormalizedPoint endC = sel->end(); @@ -388,11 +388,12 @@ RegularAreaRect * TextPage::textArea ( TextSelection * sel) const } // minX,maxX,minY,maxY gives the bounding rectangle coordinates of the document - NormalizedRect boundingRect = d->m_page->m_page->boundingBox(); - QRect content = boundingRect.geometry(scaleX,scaleY); - double minX, maxX, minY, maxY; - minX = content.left(), maxX = content.right(); - minY = content.top(), maxY = content.bottom(); + const NormalizedRect boundingRect = d->m_page->m_page->boundingBox(); + const QRect content = boundingRect.geometry(scaleX,scaleY); + const double minX = content.left(); + const double maxX = content.right(); + const double minY = content.top(); + const double maxY = content.bottom(); /** * We will now find out the TinyTextEntity for the startRectangle and TinyTextEntity for @@ -426,10 +427,8 @@ RegularAreaRect * TextPage::textArea ( TextSelection * sel) const */ // we know that startC.x > endC.x, we need to decide which is top and which is bottom - NormalizedRect start_end; - if(startC.y < endC.y) - start_end = NormalizedRect(startC.x, startC.y, endC.x, endC.y); - else start_end = NormalizedRect(startC.x, endC.y, endC.x, startC.y); + const NormalizedRect start_end = (startC.y < endC.y) ? NormalizedRect(startC.x, startC.y, endC.x, endC.y) + : NormalizedRect(startC.x, endC.y, endC.x, startC.y); // Case 1(a) if(!boundingRect.intersects(start_end)) return ret; @@ -1043,19 +1042,13 @@ static bool doesConsumeX(const QRect& first, const QRect& second, int threshold) // or if there is overlap of space by more than threshold% // there is overlap - int overlap; if(second.right() >= first.left() && first.right() >= second.left()) { - int percentage; - if(second.right() >= first.right()) overlap = first.right() - second.left(); - else overlap = second.right() - first.left(); - + const int overlap = (second.right() >= first.right()) ? first.right() - second.left() + : second.right() - first.left(); // we will divide by the smaller rectangle to calculate the overlap - if( first.width() < second.width()) - percentage = overlap * 100 / (first.right() - first.left()); - else - percentage = overlap * 100 / (second.right() - second.left()); - + const int percentage = (first.width() < second.width()) ? overlap * 100 / (first.right() - first.left()) + : overlap * 100 / (second.right() - second.left()); if(percentage >= threshold) return true; } @@ -1076,18 +1069,13 @@ static bool doesConsumeY(const QRect& first, const QRect& second, int threshold) // or if there is overlap of space by more than 80% // there is overlap - int overlap; if(second.bottom() >= first.top() && first.bottom() >= second.top()) { - int percentage; - if(second.bottom() >= first.bottom()) overlap = first.bottom() - second.top(); - else overlap = second.bottom() - first.top(); - + const int overlap = (second.bottom() >= first.bottom()) ? first.bottom() - second.top() + : second.bottom() - first.top(); //we will divide by the smaller rectangle to calculate the overlap - if( first.width() < second.width()) - percentage = overlap * 100 / (first.bottom() - first.top()); - else - percentage = overlap * 100 / (second.bottom() - second.top()); + const int percentage = (first.width() < second.width()) ? overlap * 100 / (first.bottom() - first.top()) + : overlap * 100 / (second.bottom() - second.top()); if(percentage >= threshold) return true; } @@ -1102,7 +1090,7 @@ static bool doesConsumeY(const QRect& first, const QRect& second, int threshold) void TextPagePrivate::removeSpace() { TextList::Iterator it = m_words.begin(), itEnd = m_words.end(); - QString str(' '); + const QString str(' '); it = m_words.begin(), itEnd = m_words.end(); for( ; it != itEnd ; it++) @@ -1145,7 +1133,8 @@ void TextPagePrivate::makeWordFromCharacters() TextList::Iterator it = tmpList.begin(), itEnd = tmpList.end(), tmpIt; int newLeft,newRight,newTop,newBottom; - int pageWidth = m_page->m_page->width(), pageHeight = m_page->m_page->height(); + const int pageWidth = m_page->m_page->width(); + const int pageHeight = m_page->m_page->height(); int index = 0; for( ; it != itEnd ; it++) @@ -1192,13 +1181,13 @@ void TextPagePrivate::makeWordFromCharacters() break; } - int text_y1 = elementArea.top() , - text_x1 = elementArea.left(), - text_y2 = elementArea.y() + elementArea.height(), - text_x2 = elementArea.x() + elementArea.width(); - int line_y1 = lineArea.top() ,line_x1 = lineArea.left(), - line_y2 = lineArea.y() + lineArea.height(), - line_x2 = lineArea.x() + lineArea.width(); + const int text_y1 = elementArea.top() , + text_x1 = elementArea.left(), + text_y2 = elementArea.y() + elementArea.height(), + text_x2 = elementArea.x() + elementArea.width(); + const int line_y1 = lineArea.top() ,line_x1 = lineArea.left(), + line_y2 = lineArea.y() + lineArea.height(), + line_x2 = lineArea.x() + lineArea.width(); space = elementArea.left() - lineArea.right(); @@ -1224,13 +1213,13 @@ void TextPagePrivate::makeWordFromCharacters() // if newString is not empty, save it if(newString.length()) { - NormalizedRect newRect(lineArea,pageWidth,pageHeight); + const NormalizedRect newRect(lineArea,pageWidth,pageHeight); newList.append(new TinyTextEntity(newString.normalized (QString::NormalizationForm_KC), newRect )); - QRect rect = newRect.geometry(pageWidth,pageHeight); - RegionText regionWord(word,rect); - int keyRect = rect.left() * rect.top() - + rect.right() * rect.bottom(); + const QRect rect = newRect.geometry(pageWidth,pageHeight); + const RegionText regionWord(word,rect); + const int keyRect = rect.left() * rect.top() + + rect.right() * rect.bottom(); // there may be more than one element in the same key m_word_chars_map.insertMulti(keyRect,regionWord); @@ -1281,12 +1270,13 @@ void TextPagePrivate::makeAndSortLines(const TextList &wordsTmp, TextList::Iterator it = words.begin(), itEnd = words.end(); int i = 0; int newLeft,newRight,newTop,newBottom; - int pageWidth = m_page->m_page->width(), pageHeight = m_page->m_page->height(); + const int pageWidth = m_page->m_page->width(); + const int pageHeight = m_page->m_page->height(); //for every non-space texts(characters/words) in the textList for( ; it != itEnd ; it++) { - QRect elementArea = (*it)->area.roundedGeometry(pageWidth,pageHeight); + const QRect elementArea = (*it)->area.roundedGeometry(pageWidth,pageHeight); bool found = false; for( i = 0 ; i < lines.length() ; i++) @@ -1295,15 +1285,15 @@ void TextPagePrivate::makeAndSortLines(const TextList &wordsTmp, line_rects is only necessary to preserve the topmin and bottommax of all the texts in the line, left and right is not necessary at all */ - QRect lineArea = line_rects.at(i); - int text_y1 = elementArea.top() , - text_y2 = elementArea.top() + elementArea.height() , - text_x1 = elementArea.left(), - text_x2 = elementArea.left() + elementArea.width(); - int line_y1 = lineArea.top() , - line_y2 = lineArea.top() + lineArea.height(), - line_x1 = lineArea.left(), - line_x2 = lineArea.left() + lineArea.width(); + const QRect lineArea = line_rects.at(i); + const int text_y1 = elementArea.top() , + text_y2 = elementArea.top() + elementArea.height() , + text_x1 = elementArea.left(), + text_x2 = elementArea.left() + elementArea.width(); + const int line_y1 = lineArea.top() , + line_y2 = lineArea.top() + lineArea.height(), + line_x1 = lineArea.left(), + line_x2 = lineArea.left() + lineArea.width(); /* if the new text and the line has y overlapping parts of more than 70%, @@ -1368,10 +1358,10 @@ void TextPagePrivate::calculateStatisticalInformation(const SortedTextList &line QMap line_space_stat; for(int i = 0 ; i < line_rects.length(); i++) { - QRect rectUpper = line_rects.at(i); + const QRect rectUpper = line_rects.at(i); if(i+1 == line_rects.length()) break; - QRect rectLower = line_rects.at(i+1); + const QRect rectLower = line_rects.at(i+1); int linespace = rectLower.top() - (rectUpper.top() + rectUpper.height()); if(linespace < 0) linespace =-linespace; @@ -1422,10 +1412,10 @@ void TextPagePrivate::calculateStatisticalInformation(const SortedTextList &line // for every line for( ; it != itEnd ; it++ ) { - QRect area1 = (*it)->area.roundedGeometry(pageWidth,pageHeight); + const QRect area1 = (*it)->area.roundedGeometry(pageWidth,pageHeight); if( it+1 == itEnd ) break; - QRect area2 = (*(it+1))->area.roundedGeometry(pageWidth,pageHeight); + const QRect area2 = (*(it+1))->area.roundedGeometry(pageWidth,pageHeight); int space = area2.left() - area1.right(); if(space > maxSpace) @@ -1475,14 +1465,14 @@ void TextPagePrivate::calculateStatisticalInformation(const SortedTextList &line else col_space_stat[maxSpace] = 1; //store the max rect of each line - int left,right,top,bottom; - left = max_area1.right(); - right = max_area2.left(); - - max_area1.top() > max_area2.top() ? top = max_area2.top() : top = max_area1.top(); - max_area1.bottom() < max_area2.bottom() ? bottom = max_area2.bottom() : bottom = max_area1.bottom(); - - QRect rect(left,top,right-left,bottom-top); + const int left = max_area1.right(); + const int right = max_area2.left(); + const int top = (max_area1.top() > max_area2.top()) ? max_area2.top() : + max_area1.top(); + const int bottom = (max_area1.bottom() < max_area2.bottom()) ? max_area2.bottom() : + max_area1.bottom(); + + const QRect rect(left,top,right-left,bottom-top); max_hor_space_rects.append(rect); } else max_hor_space_rects.append(QRect(0,0,0,0)); @@ -1522,7 +1512,8 @@ void TextPagePrivate::calculateStatisticalInformation(const SortedTextList &line */ void TextPagePrivate::XYCutForBoundingBoxes(int tcx, int tcy) { - int pageWidth = m_page->m_page->width(), pageHeight = m_page->m_page->height(); + const int pageWidth = m_page->m_page->width(); + const int pageHeight = m_page->m_page->height(); // proj_on_yaxis will start from 0(rect.left()) to N(rect.right) int proj_on_yaxis[5000], proj_on_xaxis[5000]; @@ -1531,7 +1522,7 @@ void TextPagePrivate::XYCutForBoundingBoxes(int tcx, int tcy) QRect contentRect(m_page->m_page->boundingBox().geometry(pageWidth,pageHeight)); TextList words; copyToList(words); - RegionText root(words,contentRect); + const RegionText root(words,contentRect); // start the tree with the root, it is our only region at the start tree.push_back(root); @@ -1542,7 +1533,7 @@ void TextPagePrivate::XYCutForBoundingBoxes(int tcx, int tcy) // while traversing the tree has not been ended while(i < tree.length()) { - RegionText node = tree.at(i); + const RegionText node = tree.at(i); QRect regionRect = node.area(); /** @@ -1699,27 +1690,26 @@ void TextPagePrivate::XYCutForBoundingBoxes(int tcx, int tcy) bool cut_hor = false, cut_ver = false; // For horizontal cut - int topHeight = cut_pos_y - (regionRect.top() - old_top); - QRect topRect(regionRect.left(), - regionRect.top(), - regionRect.width(), - topHeight); - QRect bottomRect(regionRect.left(), - regionRect.top() + topHeight, - regionRect.width(), - regionRect.height() - topHeight ); + const int topHeight = cut_pos_y - (regionRect.top() - old_top); + const QRect topRect(regionRect.left(), + regionRect.top(), + regionRect.width(), + topHeight); + const QRect bottomRect(regionRect.left(), + regionRect.top() + topHeight, + regionRect.width(), + regionRect.height() - topHeight ); // For vertical Cut - int leftWidth = cut_pos_x - (regionRect.left() - old_left); - - QRect leftRect(regionRect.left(), - regionRect.top(), - leftWidth, - regionRect.height()); - QRect rightRect(regionRect.left() + leftWidth, - regionRect.top(), - regionRect.width() - leftWidth, - regionRect.height()); + const int leftWidth = cut_pos_x - (regionRect.left() - old_left); + const QRect leftRect(regionRect.left(), + regionRect.top(), + leftWidth, + regionRect.height()); + const QRect rightRect(regionRect.left() + leftWidth, + regionRect.top(), + regionRect.width() - leftWidth, + regionRect.height()); if(gap_y >= gap_x && gap_y >= tcy) cut_hor = true; @@ -1823,7 +1813,8 @@ void TextPagePrivate::addNecessarySpace() RegionTextList tree = m_XY_cut_tree; int i,j,k; - int pageWidth = m_page->m_page->width(), pageHeight = m_page->m_page->height(); + const int pageWidth = m_page->m_page->width(); + const int pageHeight = m_page->m_page->height(); // Only change the texts under RegionTexts, not the area for(j = 0 ; j < tree.length() ; j++) @@ -1842,25 +1833,23 @@ void TextPagePrivate::addNecessarySpace() TextList list = lines.at(i); for( k = 0 ; k < list.length() ; k++ ) { - QRect area1 = list.at(k)->area.roundedGeometry(pageWidth,pageHeight); + const QRect area1 = list.at(k)->area.roundedGeometry(pageWidth,pageHeight); if( k+1 >= list.length() ) break; - QRect area2 = list.at(k+1)->area.roundedGeometry(pageWidth,pageHeight); - int space = area2.left() - area1.right(); + const QRect area2 = list.at(k+1)->area.roundedGeometry(pageWidth,pageHeight); + const int space = area2.left() - area1.right(); if(space != 0) { // Make a TinyTextEntity of string space and push it between it and it+1 - int left,right,top,bottom; - - left = area1.right(); - right = area2.left(); - top = area2.top() < area1.top() ? area2.top() : area1.top(); - bottom = area2.bottom() > area1.bottom() ? area2.bottom() : area1.bottom(); - - QString spaceStr(" "); - QRect rect(QPoint(left,top),QPoint(right,bottom)); - NormalizedRect entRect(rect,pageWidth,pageHeight); + const int left = area1.right(); + const int right = area2.left(); + const int top = area2.top() < area1.top() ? area2.top() : area1.top(); + const int bottom = area2.bottom() > area1.bottom() ? area2.bottom() : area1.bottom(); + + const QString spaceStr(" "); + const QRect rect(QPoint(left,top),QPoint(right,bottom)); + const NormalizedRect entRect(rect,pageWidth,pageHeight); TinyTextEntity *ent = new TinyTextEntity(spaceStr,entRect); list.insert(k+1,ent); @@ -1909,28 +1898,28 @@ void TextPagePrivate::addNecessarySpace() */ void TextPagePrivate::breakWordIntoCharacters() { - QString spaceStr(" "); + const QString spaceStr(" "); TextList tmp; - int count = 0, i; - int pageWidth = m_page->m_page->width(), pageHeight = m_page->m_page->height(); + const int pageWidth = m_page->m_page->width(); + const int pageHeight = m_page->m_page->height(); - for(i = 0 ; i < m_words.length() ; i++) + for(int i = 0 ; i < m_words.length() ; i++) { TinyTextEntity *ent = m_words.at(i); - QRect rect = ent->area.geometry(pageWidth,pageHeight); + const QRect rect = ent->area.geometry(pageWidth,pageHeight); // the spaces contains only one character, so we can skip them if(ent->text() == spaceStr) tmp.append(ent); else { - int key = rect.left() * rect.top() - + rect.right() * rect.bottom(); + const int key = rect.left() * rect.top() + + rect.right() * rect.bottom(); RegionText word_text = m_word_chars_map.value(key); TextList list = word_text.text(); - count = m_word_chars_map.count(key); + const int count = m_word_chars_map.count(key); if(count > 1) { QMap::iterator it = m_word_chars_map.find(key); @@ -1940,7 +1929,7 @@ void TextPagePrivate::breakWordIntoCharacters() it++; list = word_text.text(); - QRect regionRect = word_text.area(); + const QRect regionRect = word_text.area(); if(regionRect.left() == rect.left() && regionRect.top() == rect.top()) break;