7#include "core/fpdfapi/page/cpdf_form.h"
12#include "core/fpdfapi/page/cpdf_contentparser.h"
13#include "core/fpdfapi/page/cpdf_imageobject.h"
14#include "core/fpdfapi/page/cpdf_pageobject.h"
15#include "core/fpdfapi/page/cpdf_pageobjectholder.h"
16#include "core/fpdfapi/parser/cpdf_dictionary.h"
17#include "core/fpdfapi/parser/cpdf_stream.h"
18#include "core/fxge/dib/cfx_dibitmap.h"
19#include "third_party/base/check_op.h"
27 CPDF_Dictionary* pResources,
28 CPDF_Dictionary* pParentResources,
29 CPDF_Dictionary* pPageResources) {
32 return pParentResources ? pParentResources : pPageResources;
36 RetainPtr<CPDF_Dictionary> pPageResources,
39 std::move(pPageResources),
40 std::move(pFormStream),
44 RetainPtr<CPDF_Dictionary> pPageResources,
46 CPDF_Dictionary* pParentResources)
48 pFormStream->GetMutableDict(),
51 pFormStream->GetMutableDict()
52 ->GetMutableDictFor(
"Resources")
55 pPageResources.Get()
))),
63 ParseContentInternal(
nullptr,
nullptr,
nullptr,
nullptr);
69 ParseContentInternal(pGraphicStates, pParentMatrix,
nullptr, recursion_state);
73 ParseContentInternal(
nullptr,
nullptr, pType3Char,
nullptr);
76void CPDF_Form::ParseContentInternal(
const CPDF_AllStates* pGraphicStates,
84 StartParse(std::make_unique<CPDF_ContentParser>(
85 GetStream(),
this, pGraphicStates, pParentMatrix, pType3Char,
86 recursion_state ? recursion_state : &m_RecursionState));
93 return GetPageObjectCount() != 0;
97 if (GetPageObjectCount() == 0)
100 float left = 1000000.0f;
101 float right = -1000000.0f;
102 float bottom = 1000000.0f;
103 float top = -1000000.0f;
104 for (
const auto& pObj : *
this) {
105 const auto& rect = pObj->GetRect();
106 left = std::min(left, rect.left);
107 right = std::max(right, rect.right);
108 bottom = std::min(bottom, rect.bottom);
109 top = std::max(top, rect.top);
115 return m_pFormStream;
120 if (GetPageObjectCount() != 1)
121 return absl::nullopt;
123 CPDF_ImageObject* pImageObject = (*begin())->AsImage();
125 return absl::nullopt;
constexpr CFX_FloatRect(float l, float b, float r, float t)
constexpr CFX_FloatRect()=default
RetainPtr< CFX_DIBitmap > GetIndependentBitmap() const
const CFX_Matrix & matrix() const
void LoadTransparencyInfo()
ParseState GetParseState() const
void ContinueParse(PauseIndicatorIface *pPause)