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