Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2373)

Unified Diff: core/fpdfdoc/cpdf_annotlist.cpp

Issue 2273893002: Display content of the annotation when mouse hover. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Removing useless comments. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: core/fpdfdoc/cpdf_annotlist.cpp
diff --git a/core/fpdfdoc/cpdf_annotlist.cpp b/core/fpdfdoc/cpdf_annotlist.cpp
index 9dc0e9587d1ca2f92b6a3372df4033aed18e3399..890c59dd596a58109eef339269f9de1c9bb14d40 100644
--- a/core/fpdfdoc/cpdf_annotlist.cpp
+++ b/core/fpdfdoc/cpdf_annotlist.cpp
@@ -16,6 +16,34 @@
#include "core/fpdfdoc/include/cpdf_occontext.h"
#include "core/fxge/include/cfx_renderdevice.h"
+namespace {
+
+CPDF_Annot* CreatePopupAnnot(CPDF_Annot* pAnnot, CPDF_Document* pDocument) {
dsinclair 2016/08/24 14:00:20 Can this return a std::unique_ptr<CPDF_Annot> to s
jaepark 2016/08/24 18:37:48 Done.
+ CPDF_Dictionary* pParentDict = pAnnot->GetAnnotDict();
+ if (!pParentDict)
+ return nullptr;
+
+ CPDF_Dictionary* pAnnotDict = new CPDF_Dictionary;
+ pAnnotDict->SetAtName("Type", "Annot");
+ pAnnotDict->SetAtName("Subtype", "Popup");
+ pAnnotDict->SetAtString("T", pParentDict->GetStringBy("T"));
+ pAnnotDict->SetAtString("Contents", pParentDict->GetStringBy("Contents"));
+
+ CFX_FloatRect rect = pParentDict->GetRectBy("Rect");
+ CFX_FloatRect popupRect(0, 0, 200, 200);
dsinclair 2016/08/24 14:00:20 Where does 200 come from? Is it spec, or just a nu
jaepark 2016/08/24 18:37:48 This is just a number. This represents the rectang
+ popupRect.Translate((rect.left + rect.right) / 2,
dsinclair 2016/08/24 14:00:20 Why left + right and not left + popupRect.width? i
jaepark 2016/08/24 18:37:48 I wanted to place the popup note in the middle of
+ rect.bottom - popupRect.Height());
+
+ pAnnotDict->SetAtRect("Rect", popupRect);
+ pAnnotDict->SetAtInteger("F", 0);
+
+ CPDF_Annot* pPopupAnnot = new CPDF_Annot(pAnnotDict, pDocument);
+ pAnnot->SetPopupAnnot(pPopupAnnot);
+ return pPopupAnnot;
+}
+
+} // namespace
+
CPDF_AnnotList::CPDF_AnnotList(CPDF_Page* pPage)
: m_pDocument(pPage->m_pDocument) {
if (!pPage->m_pFormDict)
@@ -42,8 +70,11 @@ CPDF_AnnotList::CPDF_AnnotList(CPDF_Page* pPage)
pAnnots->RemoveAt(i + 1);
pDict = pAnnots->GetDictAt(i);
}
- m_AnnotList.push_back(
- std::unique_ptr<CPDF_Annot>(new CPDF_Annot(pDict, m_pDocument)));
+
+ CPDF_Annot* pAnnot = new CPDF_Annot(pDict, m_pDocument);
+ m_AnnotList.push_back(WrapUnique(pAnnot));
+ m_AnnotList.push_back(WrapUnique(CreatePopupAnnot(pAnnot, m_pDocument)));
+
if (bRegenerateAP && pDict->GetStringBy("Subtype") == "Widget" &&
CPDF_InterForm::IsUpdateAPEnabled()) {
FPDF_GenerateAP(m_pDocument, pDict);

Powered by Google App Engine
This is Rietveld 408576698