cfx_shading.h revision 4d3acf4ec42bf6e838f9060103aff98fbf170794
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/fx_coordinates.h"
11#include "core/fxcrt/fx_system.h"
12#include "core/fxge/fx_dib.h"
13
14#define FX_SHADING_Steps 256
15
16enum CFX_Shading_Type { FX_SHADING_Axial = 1, FX_SHADING_Radial };
17
18class CFX_Shading {
19 public:
20  // Axial shading.
21  CFX_Shading(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  CFX_Shading(const CFX_PointF& beginPoint,
30              const CFX_PointF& endPoint,
31              const FX_FLOAT beginRadius,
32              const FX_FLOAT endRadius,
33              bool isExtendedBegin,
34              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 bool m_isExtendedBegin;
50  const 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