Fix clang warnings so we can treat warnings as errors.
[pdfium.git] / core / src / fxge / dib / dib_int.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4  \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 class CPDF_FixedMatrix : public CFX_Object\r
8 {\r
9 public:\r
10     CPDF_FixedMatrix(const CFX_AffineMatrix& src, int bits)\r
11     {\r
12         base = 1 << bits;\r
13         a = FXSYS_round(src.a * base);\r
14         b = FXSYS_round(src.b * base);\r
15         c = FXSYS_round(src.c * base);\r
16         d = FXSYS_round(src.d * base);\r
17         e = FXSYS_round(src.e * base);\r
18         f = FXSYS_round(src.f * base);\r
19     }\r
20     inline void Transform(int x, int y, int& x1, int& y1)\r
21     {\r
22         x1 = (a * x + c * y + e + base / 2) / base;\r
23         y1 = (b * x + d * y + f + base / 2) / base;\r
24     }\r
25     int         a, b, c, d, e, f;\r
26     int         base;\r
27 };\r
28 #define FPDF_HUGE_IMAGE_SIZE    60000000\r
29 struct PixelWeight {\r
30     int         m_SrcStart;\r
31     int         m_SrcEnd;\r
32     int         m_Weights[1];\r
33 };\r
34 class CWeightTable : public CFX_Object\r
35 {\r
36 public:\r
37     CWeightTable()\r
38     {\r
39         m_pWeightTables = NULL;\r
40     }\r
41     ~CWeightTable()\r
42     {\r
43         if(m_pWeightTables) {\r
44             FX_Free(m_pWeightTables);\r
45         }\r
46         m_pWeightTables = NULL;\r
47     }\r
48     void                        Calc(int dest_len, int dest_min, int dest_max, int src_len, int src_min, int src_max, int flags);\r
49     PixelWeight*        GetPixelWeight(int pixel)\r
50     {\r
51         return (PixelWeight*)(m_pWeightTables + (pixel - m_DestMin) * m_ItemSize);\r
52     }\r
53     int                         m_DestMin, m_ItemSize;\r
54     FX_LPBYTE           m_pWeightTables;\r
55 };\r
56 class CStretchEngine : public CFX_Object\r
57 {\r
58 public:\r
59     CStretchEngine(IFX_ScanlineComposer* pDestBitmap, FXDIB_Format dest_format,\r
60                    int dest_width, int dest_height, const FX_RECT& clip_rect,\r
61                    const CFX_DIBSource* pSrcBitmap, int flags);\r
62     ~CStretchEngine();\r
63     FX_BOOL             Continue(IFX_Pause* pPause);\r
64 public:\r
65     FXDIB_Format m_DestFormat;\r
66     int         m_DestBpp, m_SrcBpp, m_bHasAlpha;\r
67     IFX_ScanlineComposer*       m_pDestBitmap;\r
68     int         m_DestWidth, m_DestHeight;\r
69     FX_RECT     m_DestClip;\r
70     FX_LPBYTE   m_pDestScanline;\r
71     FX_LPBYTE   m_pDestMaskScanline;\r
72     FX_RECT     m_SrcClip;\r
73     const CFX_DIBSource*        m_pSource;\r
74     FX_DWORD*   m_pSrcPalette;\r
75     int         m_SrcWidth, m_SrcHeight;\r
76     int         m_SrcPitch, m_InterPitch;\r
77     int m_ExtraMaskPitch;\r
78     unsigned char*      m_pInterBuf;\r
79     unsigned char*      m_pExtraAlphaBuf;\r
80     int         m_TransMethod;\r
81     int         m_Flags;\r
82     CWeightTable        m_WeightTable;\r
83     int         m_CurRow;\r
84     FX_BOOL     StartStretchHorz();\r
85     FX_BOOL     ContinueStretchHorz(IFX_Pause* pPause);\r
86     void        StretchVert();\r
87     int         m_State;\r
88 };\r