// 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", // CursorEnter "X", // CursorExit "D", // ButtonDown "U", // ButtonUp "Fo", // GetFocus "Bl", // LoseFocus "PO", // PageOpen "PC", // PageClose "PV", // PageVisible "PI", // PageInvisible "O", // OpenPage "C", // ClosePage "K", // KeyStroke "F", // Format "V", // Validate "C", // Calculate "WC", // CloseDocument "WS", // SaveDocument "DS", // DocumentSaved "WP", // PrintDocument "DP", // DocumentPrinted }; // |g_sAATypes| should have one less element than enum AActionType due to // DocumentOpen, which is an artificial type. static_assert(FX_ArraySize(g_sAATypes) == CPDF_AAction::NumberOfActions - 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 ButtonUp: case ButtonDown: return true; default: return false; } }