1 // Copyright 2016 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 
7 #ifndef CORE_FPDFAPI_PAGE_CPDF_PATTERN_H_
8 #define CORE_FPDFAPI_PAGE_CPDF_PATTERN_H_
9 
10 #include "core/fxcrt/fx_coordinates.h"
11 #include "core/fxcrt/fx_system.h"
12 
13 class CPDF_Document;
14 class CPDF_Object;
15 class CPDF_ShadingPattern;
16 class CPDF_TilingPattern;
17 
18 class CPDF_Pattern {
19  public:
20   enum PatternType { TILING = 1, SHADING };
21 
22   virtual ~CPDF_Pattern();
23 
24   virtual CPDF_TilingPattern* AsTilingPattern() = 0;
25   virtual CPDF_ShadingPattern* AsShadingPattern() = 0;
26 
document()27   CPDF_Document* document() { return m_pDocument; }
pattern_obj()28   CPDF_Object* pattern_obj() { return m_pPatternObj; }
pattern_to_form()29   CFX_Matrix* pattern_to_form() { return &m_Pattern2Form; }
parent_matrix()30   const CFX_Matrix& parent_matrix() const { return m_ParentMatrix; }
31 
32  protected:
33   CPDF_Pattern(PatternType type,
34                CPDF_Document* pDoc,
35                CPDF_Object* pObj,
36                const CFX_Matrix& parentMatrix);
37 
38   const PatternType m_PatternType;
39   CPDF_Document* const m_pDocument;
40   CPDF_Object* const m_pPatternObj;
41   CFX_Matrix m_Pattern2Form;
42   const CFX_Matrix m_ParentMatrix;
43 };
44 
45 #endif  // CORE_FPDFAPI_PAGE_CPDF_PATTERN_H_
46