#include "core/fpdfdoc/cpdf_annot.h"
#include <algorithm>
#include <utility>
#include "build/build_config.h"
#include "constants/annotation_common.h"
#include "constants/annotation_flags.h"
#include "core/fpdfapi/page/cpdf_form.h"
#include "core/fpdfapi/page/cpdf_page.h"
#include "core/fpdfapi/page/cpdf_pageimagecache.h"
#include "core/fpdfapi/parser/cpdf_array.h"
#include "core/fpdfapi/parser/cpdf_boolean.h"
#include "core/fpdfapi/parser/cpdf_dictionary.h"
#include "core/fpdfapi/parser/cpdf_document.h"
#include "core/fpdfapi/parser/cpdf_stream.h"
#include "core/fpdfapi/parser/fpdf_parser_utility.h"
#include "core/fpdfapi/render/cpdf_rendercontext.h"
#include "core/fpdfapi/render/cpdf_renderoptions.h"
#include "core/fpdfdoc/cpdf_generateap.h"
#include "core/fxcrt/check.h"
#include "core/fxge/cfx_fillrenderoptions.h"
#include "core/fxge/cfx_graphstatedata.h"
#include "core/fxge/cfx_path.h"
#include "core/fxge/cfx_renderdevice.h"
namespace {
const char kPDFiumKey_HasGeneratedAP[] = …;
bool IsTextMarkupAnnotation(CPDF_Annot::Subtype type) { … }
CPDF_Form* AnnotGetMatrix(CPDF_Page* pPage,
CPDF_Annot* pAnnot,
CPDF_Annot::AppearanceMode mode,
const CFX_Matrix& mtUser2Device,
CFX_Matrix* matrix) { … }
RetainPtr<CPDF_Stream> GetAnnotAPInternal(CPDF_Dictionary* pAnnotDict,
CPDF_Annot::AppearanceMode eMode,
bool bFallbackToNormal) { … }
}
CPDF_Annot::CPDF_Annot(RetainPtr<CPDF_Dictionary> pDict,
CPDF_Document* pDocument)
: … { … }
CPDF_Annot::~CPDF_Annot() { … }
void CPDF_Annot::GenerateAPIfNeeded() { … }
bool CPDF_Annot::ShouldGenerateAP() const { … }
bool CPDF_Annot::ShouldDrawAnnotation() const { … }
void CPDF_Annot::ClearCachedAP() { … }
CPDF_Annot::Subtype CPDF_Annot::GetSubtype() const { … }
CFX_FloatRect CPDF_Annot::RectForDrawing() const { … }
CFX_FloatRect CPDF_Annot::GetRect() const { … }
uint32_t CPDF_Annot::GetFlags() const { … }
bool CPDF_Annot::IsHidden() const { … }
RetainPtr<CPDF_Stream> GetAnnotAP(CPDF_Dictionary* pAnnotDict,
CPDF_Annot::AppearanceMode eMode) { … }
RetainPtr<CPDF_Stream> GetAnnotAPNoFallback(CPDF_Dictionary* pAnnotDict,
CPDF_Annot::AppearanceMode eMode) { … }
CPDF_Form* CPDF_Annot::GetAPForm(CPDF_Page* pPage, AppearanceMode mode) { … }
void CPDF_Annot::SetPopupAnnotOpenState(bool bOpenState) { … }
std::optional<CFX_FloatRect> CPDF_Annot::GetPopupAnnotRect() const { … }
CFX_FloatRect CPDF_Annot::RectFromQuadPointsArray(const CPDF_Array* pArray,
size_t nIndex) { … }
CFX_FloatRect CPDF_Annot::BoundingRectFromQuadPoints(
const CPDF_Dictionary* pAnnotDict) { … }
CFX_FloatRect CPDF_Annot::RectFromQuadPoints(const CPDF_Dictionary* pAnnotDict,
size_t nIndex) { … }
CPDF_Annot::Subtype CPDF_Annot::StringToAnnotSubtype(
const ByteString& sSubtype) { … }
ByteString CPDF_Annot::AnnotSubtypeToString(CPDF_Annot::Subtype nSubtype) { … }
size_t CPDF_Annot::QuadPointCount(const CPDF_Array* pArray) { … }
bool CPDF_Annot::DrawAppearance(CPDF_Page* pPage,
CFX_RenderDevice* pDevice,
const CFX_Matrix& mtUser2Device,
AppearanceMode mode) { … }
bool CPDF_Annot::DrawInContext(CPDF_Page* pPage,
CPDF_RenderContext* pContext,
const CFX_Matrix& mtUser2Device,
AppearanceMode mode) { … }
void CPDF_Annot::DrawBorder(CFX_RenderDevice* pDevice,
const CFX_Matrix* pUser2Device) { … }