Rework some CPDFSDK_Annot methods.
Mark two methods as pure virtual, so we don't need to implement
unreachable stubs. Then make constructor protected, since we can't
(and don't) instantiate this abstract class.
De-virtualize one method since it is only called on the subclass
that can support it in the first place.
Change-Id: Ib217f475960ccbb02d7dbd313111c700c98f2ac4
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/85350
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/cpdfsdk_annot.cpp b/fpdfsdk/cpdfsdk_annot.cpp
index 8ac6df1..f8f8839 100644
--- a/fpdfsdk/cpdfsdk_annot.cpp
+++ b/fpdfsdk/cpdfsdk_annot.cpp
@@ -40,20 +40,10 @@
return nullptr;
}
-CPDF_Annot::Subtype CPDFSDK_Annot::GetAnnotSubtype() const {
- return CPDF_Annot::Subtype::UNKNOWN;
-}
-
bool CPDFSDK_Annot::IsSignatureWidget() const {
return false;
}
-void CPDFSDK_Annot::SetRect(const CFX_FloatRect& rect) {}
-
-CFX_FloatRect CPDFSDK_Annot::GetRect() const {
- return CFX_FloatRect();
-}
-
IPDF_Page* CPDFSDK_Annot::GetPage() {
#ifdef PDF_ENABLE_XFA
IPDF_Page* pXFAPage = GetXFAPage();
diff --git a/fpdfsdk/cpdfsdk_annot.h b/fpdfsdk/cpdfsdk_annot.h
index 666befc..2b40449 100644
--- a/fpdfsdk/cpdfsdk_annot.h
+++ b/fpdfsdk/cpdfsdk_annot.h
@@ -20,7 +20,6 @@
class CPDFSDK_Annot : public Observable {
public:
- explicit CPDFSDK_Annot(CPDFSDK_PageView* pPageView);
virtual ~CPDFSDK_Annot();
virtual CPDFSDK_BAAnnot* AsBAAnnot();
@@ -28,10 +27,9 @@
virtual int GetLayoutOrder() const;
virtual CPDF_Annot* GetPDFAnnot() const;
- virtual CPDF_Annot::Subtype GetAnnotSubtype() const;
virtual bool IsSignatureWidget() const;
- virtual CFX_FloatRect GetRect() const;
- virtual void SetRect(const CFX_FloatRect& rect);
+ virtual CPDF_Annot::Subtype GetAnnotSubtype() const = 0;
+ virtual CFX_FloatRect GetRect() const = 0;
// Three cases: PDF page only, XFA page only, or XFA page backed by PDF page.
IPDF_Page* GetPage(); // Returns XFA Page if possible, else PDF page.
@@ -42,6 +40,8 @@
CPDFSDK_PageView* GetPageView() const { return m_pPageView.Get(); }
protected:
+ explicit CPDFSDK_Annot(CPDFSDK_PageView* pPageView);
+
UnownedPtr<CPDFSDK_PageView> const m_pPageView;
};
diff --git a/fpdfsdk/cpdfsdk_baannot.cpp b/fpdfsdk/cpdfsdk_baannot.cpp
index dc3f891..84b6200 100644
--- a/fpdfsdk/cpdfsdk_baannot.cpp
+++ b/fpdfsdk/cpdfsdk_baannot.cpp
@@ -50,12 +50,6 @@
return GetAnnotDict()->SetNewFor<CPDF_Dictionary>(pdfium::annotation::kAP);
}
-void CPDFSDK_BAAnnot::SetRect(const CFX_FloatRect& rect) {
- DCHECK(rect.right - rect.left >= 1.0f);
- DCHECK(rect.top - rect.bottom >= 1.0f);
- GetAnnotDict()->SetRectFor(pdfium::annotation::kRect, rect);
-}
-
CFX_FloatRect CPDFSDK_BAAnnot::GetRect() const {
return m_pAnnot->GetRect();
}
diff --git a/fpdfsdk/cpdfsdk_baannot.h b/fpdfsdk/cpdfsdk_baannot.h
index 20eb2e6..ac6b82a 100644
--- a/fpdfsdk/cpdfsdk_baannot.h
+++ b/fpdfsdk/cpdfsdk_baannot.h
@@ -26,10 +26,9 @@
CPDFSDK_BAAnnot(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPageView);
~CPDFSDK_BAAnnot() override;
- // CPDFSDK_Annot
+ // CPDFSDK_Annot:
CPDFSDK_BAAnnot* AsBAAnnot() override;
CPDF_Annot::Subtype GetAnnotSubtype() const override;
- void SetRect(const CFX_FloatRect& rect) override;
CFX_FloatRect GetRect() const override;
CPDF_Annot* GetPDFAnnot() const override;
int GetLayoutOrder() const override;
diff --git a/fpdfsdk/cpdfsdk_widget.cpp b/fpdfsdk/cpdfsdk_widget.cpp
index 9e10615..54fb453 100644
--- a/fpdfsdk/cpdfsdk_widget.cpp
+++ b/fpdfsdk/cpdfsdk_widget.cpp
@@ -379,6 +379,12 @@
return pField ? pField->GetFieldType() : FormFieldType::kUnknown;
}
+void CPDFSDK_Widget::SetRect(const CFX_FloatRect& rect) {
+ DCHECK(rect.right - rect.left >= 1.0f);
+ DCHECK(rect.top - rect.bottom >= 1.0f);
+ GetAnnotDict()->SetRectFor(pdfium::annotation::kRect, rect);
+}
+
bool CPDFSDK_Widget::IsAppearanceValid() {
#ifdef PDF_ENABLE_XFA
CPDF_Document::Extension* pContext =
diff --git a/fpdfsdk/cpdfsdk_widget.h b/fpdfsdk/cpdfsdk_widget.h
index e3f3852..b5fbea5 100644
--- a/fpdfsdk/cpdfsdk_widget.h
+++ b/fpdfsdk/cpdfsdk_widget.h
@@ -57,6 +57,7 @@
// CPDFSDK_Annot:
int GetLayoutOrder() const override;
+ void SetRect(const CFX_FloatRect& rect);
FormFieldType GetFieldType() const;
int GetFieldFlags() const;
int GetRotate() const;