1e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved. 2e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Use of this source code is governed by a BSD-style license that can be 3e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// found in the LICENSE file. 4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 5e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "public/fpdf_ext.h" 8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <memory> 104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/cpdf_modulemgr.h" 124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/parser/cpdf_array.h" 134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/parser/cpdf_document.h" 144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfdoc/cpdf_annot.h" 154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfdoc/cpdf_interform.h" 164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfdoc/cpdf_metadata.h" 174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/fx_basic.h" 184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/fx_memory.h" 194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/fx_xml.h" 204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/fsdk_define.h" 214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "third_party/base/ptr_util.h" 22e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifdef PDF_ENABLE_XFA 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/fpdfxfa/cpdfxfa_context.h" 25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif // PDF_ENABLE_XFA 26e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool FPDF_UnSupportError(int nError) { 28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFSDK_UnsupportInfo_Adapter* pAdapter = 294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_ModuleMgr::Get()->GetUnsupportInfoAdapter(); 30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pAdapter) 314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann UNSUPPORT_INFO* info = static_cast<UNSUPPORT_INFO*>(pAdapter->GetUnspInfo()); 344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (info && info->FSDK_UnSupport_Handler) 354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann info->FSDK_UnSupport_Handler(info, nError); 364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 38e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannDLLEXPORT FPDF_BOOL STDCALL 40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFSDK_SetUnSpObjProcessHandler(UNSUPPORT_INFO* unsp_info) { 41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!unsp_info || unsp_info->version != 1) 424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 43e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_ModuleMgr::Get()->SetUnsupportInfoAdapter( 454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pdfium::MakeUnique<CFSDK_UnsupportInfo_Adapter>(unsp_info)); 464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 47e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 48e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CheckUnSupportAnnot(CPDF_Document* pDoc, const CPDF_Annot* pPDFAnnot) { 504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Annot::Subtype nAnnotSubtype = pPDFAnnot->GetSubtype(); 514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nAnnotSubtype == CPDF_Annot::Subtype::THREED) { 52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FPDF_UnSupportError(FPDF_UNSP_ANNOT_3DANNOT); 534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (nAnnotSubtype == CPDF_Annot::Subtype::SCREEN) { 54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CPDF_Dictionary* pAnnotDict = pPDFAnnot->GetAnnotDict(); 55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ByteString cbString; 56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pAnnotDict->KeyExist("IT")) 574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cbString = pAnnotDict->GetStringFor("IT"); 58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (cbString.Compare("Img") != 0) 59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FPDF_UnSupportError(FPDF_UNSP_ANNOT_SCREEN_MEDIA); 604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (nAnnotSubtype == CPDF_Annot::Subtype::MOVIE) { 61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FPDF_UnSupportError(FPDF_UNSP_ANNOT_MOVIE); 624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (nAnnotSubtype == CPDF_Annot::Subtype::SOUND) { 63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FPDF_UnSupportError(FPDF_UNSP_ANNOT_SOUND); 644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (nAnnotSubtype == CPDF_Annot::Subtype::RICHMEDIA) { 65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FPDF_UnSupportError(FPDF_UNSP_ANNOT_SCREEN_RICHMEDIA); 664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (nAnnotSubtype == CPDF_Annot::Subtype::FILEATTACHMENT) { 67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FPDF_UnSupportError(FPDF_UNSP_ANNOT_ATTACHMENT); 684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (nAnnotSubtype == CPDF_Annot::Subtype::WIDGET) { 69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CPDF_Dictionary* pAnnotDict = pPDFAnnot->GetAnnotDict(); 70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ByteString cbString; 714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pAnnotDict->KeyExist("FT")) 724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann cbString = pAnnotDict->GetStringFor("FT"); 734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (cbString.Compare("Sig") == 0) 74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FPDF_UnSupportError(FPDF_UNSP_ANNOT_SIG); 75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 76e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 77e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CheckSharedForm(const CXML_Element* pElement, CFX_ByteString cbName) { 79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int count = pElement->CountAttrs(); 80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int i = 0; 81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (i = 0; i < count; i++) { 82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ByteString space, name; 83ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString value; 84ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pElement->GetAttrByIndex(i, space, name, value); 85ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (space == "xmlns" && name == "adhocwf" && 86ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann value == L"http://ns.adobe.com/AcrobatAdhocWorkflow/1.0/") { 874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXML_Element* pVersion = 884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pElement->GetElement("adhocwf", cbName.AsStringC()); 89ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pVersion) 90ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsContent = pVersion->GetContent(0); 92ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int nType = wsContent.GetInteger(); 93ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (nType) { 94ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 1: 95ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDFORM_ACROBAT); 96ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 97ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 2: 98ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDFORM_FILESYSTEM); 99ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 100ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 0: 101ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDFORM_EMAIL); 102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 104ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 105ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 106ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 1074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t nCount = pElement->CountChildren(); 108ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (i = 0; i < (int)nCount; i++) { 109ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXML_Element::ChildType childType = pElement->GetChildType(i); 110ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (childType == CXML_Element::Element) { 111ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXML_Element* pChild = pElement->GetElement(i); 112ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (CheckSharedForm(pChild, cbName)) 1134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 114ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 115ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 117e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 118e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CheckUnSupportError(CPDF_Document* pDoc, uint32_t err_code) { 120ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // Security 121ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (err_code == FPDF_ERR_SECURITY) { 122ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FPDF_UnSupportError(FPDF_UNSP_DOC_SECURITY); 123ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 124ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 125ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pDoc) 126ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 127ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 128ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // Portfolios and Packages 129ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Dictionary* pRootDict = pDoc->GetRoot(); 130ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pRootDict) { 131ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ByteString cbString; 132ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pRootDict->KeyExist("Collection")) { 133ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FPDF_UnSupportError(FPDF_UNSP_DOC_PORTABLECOLLECTION); 134ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 135ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 136ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pRootDict->KeyExist("Names")) { 1374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Dictionary* pNameDict = pRootDict->GetDictFor("Names"); 138ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pNameDict && pNameDict->KeyExist("EmbeddedFiles")) { 139ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FPDF_UnSupportError(FPDF_UNSP_DOC_ATTACHMENT); 140ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 141ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 142ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pNameDict && pNameDict->KeyExist("JavaScript")) { 1434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Dictionary* pJSDict = pNameDict->GetDictFor("JavaScript"); 1444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Array* pArray = pJSDict ? pJSDict->GetArrayFor("Names") : nullptr; 145ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pArray) { 1464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (size_t i = 0; i < pArray->GetCount(); i++) { 1474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString cbStr = pArray->GetStringAt(i); 148ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (cbStr.Compare("com.adobe.acrobat.SharedReview.Register") == 0) { 149ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDREVIEW); 150ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 151ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 152ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 153ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 154ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 155ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 156ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 157ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 158ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // SharedForm 159ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Metadata metaData(pDoc); 160ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CXML_Element* pElement = metaData.GetRoot(); 161ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pElement) 162ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CheckSharedForm(pElement, "workflowType"); 163ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 164ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef PDF_ENABLE_XFA 165ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // XFA Forms 1664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_InterForm interform(pDoc); 1674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (interform.HasXFAForm()) 168ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FPDF_UnSupportError(FPDF_UNSP_DOC_XFAFORM); 169ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif // PDF_ENABLE_XFA 170e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 171e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannDLLEXPORT int STDCALL FPDFDoc_GetPageMode(FPDF_DOCUMENT document) { 173ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); 174ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pDoc) 175ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return PAGEMODE_UNKNOWN; 176ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 177ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Dictionary* pRoot = pDoc->GetRoot(); 178ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pRoot) 179ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return PAGEMODE_UNKNOWN; 180ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 1814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Object* pName = pRoot->GetObjectFor("PageMode"); 182ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pName) 183ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return PAGEMODE_USENONE; 184ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 185ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ByteString strPageMode = pName->GetString(); 186ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (strPageMode.IsEmpty() || strPageMode.EqualNoCase("UseNone")) 187ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return PAGEMODE_USENONE; 188ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (strPageMode.EqualNoCase("UseOutlines")) 189ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return PAGEMODE_USEOUTLINES; 190ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (strPageMode.EqualNoCase("UseThumbs")) 191ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return PAGEMODE_USETHUMBS; 192ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (strPageMode.EqualNoCase("FullScreen")) 193ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return PAGEMODE_FULLSCREEN; 194ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (strPageMode.EqualNoCase("UseOC")) 195ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return PAGEMODE_USEOC; 196ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (strPageMode.EqualNoCase("UseAttachments")) 197ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return PAGEMODE_USEATTACHMENTS; 198ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 199ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return PAGEMODE_UNKNOWN; 200e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 201