typo fix
[pykit.git] / PDFWidget.cc
index 7203d30..02976cd 100644 (file)
@@ -31,7 +31,7 @@ prefix_ pykit::PDFWidget::PDFWidget(QString const & id, QNetworkAccessManager *
 {
     QWebView * webView (dynamic_cast<QWebView*>(parent));
     if (webView && !id_.isEmpty())
-        webView->page()->mainFrame()->addToJavaScriptWindowObject(id_,this);
+        webView->page()->mainFrame()->addToJavaScriptWindowObject(id_, this);
 }
 
 prefix_ pykit::PDFWidget::PDFWidget(QString const & id, QString const & document,
@@ -43,7 +43,7 @@ prefix_ pykit::PDFWidget::PDFWidget(QString const & id, QString const & document
     document_.reset(Poppler::Document::load(document));
     QWebView * webView (dynamic_cast<QWebView*>(parent));
     if (webView && !id_.isEmpty())
-        webView->page()->mainFrame()->addToJavaScriptWindowObject(id_,this);
+        webView->page()->mainFrame()->addToJavaScriptWindowObject(id_, this);
     documentSetup();
 }
 
@@ -118,18 +118,23 @@ prefix_ void pykit::PDFWidget::documentSetup()
     document_->setRenderHint(Poppler::Document::TextAntialiasing, true);
     document_->setRenderHint(Poppler::Document::TextHinting, false);
     resizeEvent(0);
+    Poppler::Page::SearchDirection dir (Poppler::Page::FromTop);
+    highlightAreas_.clear();
+    BOOST_FOREACH(QString const & str, highlightStrings_) {
+        QRectF highlightArea;
+        while (document_->page(currentPage_)->search(str, highlightArea, dir,
+                                                     Poppler::Page::CaseInsensitive)) {
+            highlightAreas_.push_back(highlightArea);
+            dir = Poppler::Page::NextResult;
+        }
+    }
     showPage();
 }
 
 prefix_ void pykit::PDFWidget::highlightString(QString const & str)
 {
-    QRectF highlightArea;
-    Poppler::Page::SearchDirection dir (Poppler::Page::FromTop);
-    while (document_->page(currentPage_)->search(str, highlightArea, dir,
-                                                 Poppler::Page::CaseInsensitive)) {
-        highlightAreas_.push_back(highlightArea);
-        dir = Poppler::Page::NextResult;
-    }
+    highlightStrings_.append(str);
+    documentSetup();
 }
 
 prefix_ void pykit::PDFWidget::showPage()
@@ -140,16 +145,15 @@ prefix_ void pykit::PDFWidget::showPage()
                       dpi_, dpi_, 0, 0, width(), height()));
     QMatrix matrix (dpi_ / 72.0, 0, 0, dpi_ / 72.0, 0, 0);
 
+    QPainter painter;
+    painter.begin(&image);
+    painter.setCompositionMode(QPainter::CompositionMode_Darken);
     BOOST_FOREACH(QRectF const & highlightArea, highlightAreas_) {
         QRect highlightRect = matrix.mapRect(highlightArea).toRect();
-        highlightRect.adjust(-2, -2, 2, 2);
-        QImage highlight = image.copy(highlightRect);
-        QPainter painter;
-        painter.begin(&image);
-        painter.fillRect(image.rect(), QColor(0, 0, 0, 32));
-        painter.drawImage(highlightRect, highlight);
-        painter.end();
+        highlightRect.adjust(-2, -2, 2, 1);
+        painter.fillRect(highlightRect, QColor(244, 229, 0));
     }
+    painter.end();
 
     setPixmap(QPixmap::fromImage(image));
 }