summaryrefslogtreecommitdiff
path: root/xfa/fwl/core/ifwl_target.h
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fwl/core/ifwl_target.h')
-rw-r--r--xfa/fwl/core/ifwl_target.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/xfa/fwl/core/ifwl_target.h b/xfa/fwl/core/ifwl_target.h
new file mode 100644
index 0000000000..fd6410e16c
--- /dev/null
+++ b/xfa/fwl/core/ifwl_target.h
@@ -0,0 +1,52 @@
+// Copyright 2014 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
+
+#ifndef XFA_FWL_CORE_IFWL_TARGET_H_
+#define XFA_FWL_CORE_IFWL_TARGET_H_
+
+#include "core/fxcrt/include/fx_basic.h"
+#include "xfa/fwl/core/fwl_error.h"
+
+// FWL contains three parallel inheritance hierarchies, which reference each
+// other via pointers as follows:
+//
+// m_pImpl
+// (nonesuch) IFWL_Target ----------> CFWL_TargetImp
+// | |
+// A A
+// m_pIface | |
+// CFWL_Widget ----------> IFWL_Widget CFWL_WidgetImp
+// | | |
+// A A A
+// | | |
+// CFWL_... IFWL_... CFWL_...Imp
+//
+
+class CFWL_TargetImp;
+
+class IFWL_Target {
+ public:
+ IFWL_Target() : m_pImpl(nullptr) {}
+ virtual ~IFWL_Target();
+
+ // These call into equivalent polymorphic methods of m_pImpl. There
+ // should be no need to override these in subclasses.
+ FWL_ERR GetClassName(CFX_WideString& wsClass) const;
+ FX_DWORD GetClassID() const;
+ FX_BOOL IsInstance(const CFX_WideStringC& wsClass) const;
+ FWL_ERR Initialize();
+ FWL_ERR Finalize();
+
+ CFWL_TargetImp* GetImpl() const { return m_pImpl; }
+
+ protected:
+ void SetImpl(CFWL_TargetImp* pImpl) { m_pImpl = pImpl; }
+
+ private:
+ CFWL_TargetImp* m_pImpl;
+};
+
+#endif // XFA_FWL_CORE_IFWL_TARGET_H_