1ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 2ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 3ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// found in the LICENSE file. 4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 5ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef FWL_TARGET_H_ 8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_TARGET_H_ 9ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "core/include/fxcrt/fx_basic.h" 11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// FWL contains three parallel inheritance hierarchies, which reference each 13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// other via pointers as follows: 14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// 15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// m_pImpl 16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// (nonesuch) IFWL_Target ----------> CFWL_TargetImp 17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// | | 18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// A A 19ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// m_pIface | | 20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// CFWL_Widget ----------> IFWL_Widget CFWL_WidgetImp 21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// | | | 22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// A A A 23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// | | | 24ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// CFWL_... IFWL_... CFWL_...Imp 25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// 26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFWL_TargetImp; 28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IFWL_Target { 30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_Target() : m_pImpl(nullptr) {} 32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual ~IFWL_Target(); 33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // These call into equivalent polymorphic methods of m_pImpl. There 35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // should be no need to override these in subclasses. 36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FWL_ERR GetClassName(CFX_WideString& wsClass) const; 37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD GetClassID() const; 38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL IsInstance(const CFX_WideStringC& wsClass) const; 39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FWL_ERR Initialize(); 40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FWL_ERR Finalize(); 41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_TargetImp* GetImpl() const { return m_pImpl; } 43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann protected: 45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void SetImpl(CFWL_TargetImp* pImpl) { m_pImpl = pImpl; } 46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann private: 48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFWL_TargetImp* m_pImpl; 49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}; 50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif // FWL_TARGET_H_ 52