// Copyright 2016 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "core/fpdfdoc/cpdf_aaction.h" #include "core/fpdfapi/parser/cpdf_dictionary.h" namespace { constexpr const char* g_sAATypes[] = { "E", // kCursorEnter "X", // kCursorExit "D", // kButtonDown "U", // kButtonUp "Fo", // kGetFocus "Bl", // kLoseFocus "PO", // kPageOpen "PC", // kPageClose "PV", // kPageVisible "PI", // kPageInvisible "O", // kOpenPage "C", // kClosePage "K", // kKeyStroke "F", // kFormat "V", // kValidate "C", // kCalculate "WC", // kCloseDocument "WS", // kSaveDocument "DS", // kDocumentSaved "WP", // kPrintDocument "DP", // kDocumentPrinted }; // |g_sAATypes| should have one less element than enum AActionType due to // kDocumentOpen, which is an artificial type. static_assert(FX_ArraySize(g_sAATypes) == CPDF_AAction::kNumberOfActions - 1, "g_sAATypes count mismatch"); } // namespace CPDF_AAction::CPDF_AAction(const CPDF_Dictionary* pDict) : m_pDict(pDict) {} CPDF_AAction::CPDF_AAction(const CPDF_AAction& that) = default; CPDF_AAction::~CPDF_AAction() = default; bool CPDF_AAction::ActionExist(AActionType eType) const { return m_pDict && m_pDict->KeyExist(g_sAATypes[eType]); } CPDF_Action CPDF_AAction::GetAction(AActionType eType) const { return CPDF_Action(m_pDict ? m_pDict->GetDictFor(g_sAATypes[eType]) : nullptr); } // static bool CPDF_AAction::IsUserClick(AActionType eType) { switch (eType) { case kButtonUp: case kButtonDown: return true; default: return false; } }