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 XFA_FXGRAPHICS_CFX_SHADING_H_
8 #define XFA_FXGRAPHICS_CFX_SHADING_H_
9 
10 #include "core/fxcrt/include/fx_coordinates.h"
11 #include "core/fxcrt/include/fx_system.h"
12 #include "core/fxge/include/fx_dib.h"
13 
14 #define FX_SHADING_Steps 256
15 
16 enum CFX_Shading_Type { FX_SHADING_Axial = 1, FX_SHADING_Radial };
17 
18 class CFX_Shading {
19  public:
20   // Axial shading.
21   CFX_Shading(const CFX_PointF& beginPoint,
22               const CFX_PointF& endPoint,
23               FX_BOOL isExtendedBegin,
24               FX_BOOL isExtendedEnd,
25               const FX_ARGB beginArgb,
26               const FX_ARGB endArgb);
27 
28   // Radial shading.
29   CFX_Shading(const CFX_PointF& beginPoint,
30               const CFX_PointF& endPoint,
31               const FX_FLOAT beginRadius,
32               const FX_FLOAT endRadius,
33               FX_BOOL isExtendedBegin,
34               FX_BOOL isExtendedEnd,
35               const FX_ARGB beginArgb,
36               const FX_ARGB endArgb);
37   virtual ~CFX_Shading();
38 
39  private:
40   friend class CFX_Graphics;
41 
42   void InitArgbArray();
43 
44   const CFX_Shading_Type m_type;
45   const CFX_PointF m_beginPoint;
46   const CFX_PointF m_endPoint;
47   const FX_FLOAT m_beginRadius;
48   const FX_FLOAT m_endRadius;
49   const FX_BOOL m_isExtendedBegin;
50   const FX_BOOL m_isExtendedEnd;
51   const FX_ARGB m_beginArgb;
52   const FX_ARGB m_endArgb;
53   FX_ARGB m_argbArray[FX_SHADING_Steps];
54 };
55 
56 #endif  // XFA_FXGRAPHICS_CFX_SHADING_H_
57