Sanity check the values of TRUE and FALSE.
[pdfium.git] / core / src / fxge / dib / dib_int.h
index a9d0b02..69f2823 100644 (file)
-// Copyright 2014 PDFium Authors. All rights reserved.\r
-// Use of this source code is governed by a BSD-style license that can be\r
-// found in the LICENSE file.\r
\r
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
-\r
-class CPDF_FixedMatrix : public CFX_Object\r
-{\r
-public:\r
-    CPDF_FixedMatrix(const CFX_AffineMatrix& src, int bits)\r
-    {\r
-        base = 1 << bits;\r
-        a = FXSYS_round(src.a * base);\r
-        b = FXSYS_round(src.b * base);\r
-        c = FXSYS_round(src.c * base);\r
-        d = FXSYS_round(src.d * base);\r
-        e = FXSYS_round(src.e * base);\r
-        f = FXSYS_round(src.f * base);\r
-    }\r
-    inline void        Transform(int x, int y, int& x1, int& y1)\r
-    {\r
-        x1 = (a * x + c * y + e + base / 2) / base;\r
-        y1 = (b * x + d * y + f + base / 2) / base;\r
-    }\r
-    int                a, b, c, d, e, f;\r
-    int                base;\r
-};\r
-#define FPDF_HUGE_IMAGE_SIZE   60000000\r
-struct PixelWeight {\r
-    int                m_SrcStart;\r
-    int                m_SrcEnd;\r
-    int                m_Weights[1];\r
-};\r
-class CWeightTable : public CFX_Object\r
-{\r
-public:\r
-    CWeightTable()\r
-    {\r
-        m_pWeightTables = NULL;\r
-    }\r
-    ~CWeightTable()\r
-    {\r
-        if(m_pWeightTables) {\r
-            FX_Free(m_pWeightTables);\r
-        }\r
-        m_pWeightTables = NULL;\r
-    }\r
-    void                       Calc(int dest_len, int dest_min, int dest_max, int src_len, int src_min, int src_max, int flags);\r
-    PixelWeight*       GetPixelWeight(int pixel)\r
-    {\r
-        return (PixelWeight*)(m_pWeightTables + (pixel - m_DestMin) * m_ItemSize);\r
-    }\r
-    int                                m_DestMin, m_ItemSize;\r
-    FX_LPBYTE          m_pWeightTables;\r
-};\r
-class CStretchEngine : public CFX_Object\r
-{\r
-public:\r
-    CStretchEngine(IFX_ScanlineComposer* pDestBitmap, FXDIB_Format dest_format,\r
-                   int dest_width, int dest_height, const FX_RECT& clip_rect,\r
-                   const CFX_DIBSource* pSrcBitmap, int flags);\r
-    ~CStretchEngine();\r
-    FX_BOOL            Continue(IFX_Pause* pPause);\r
-public:\r
-    FXDIB_Format m_DestFormat;\r
-    int                m_DestBpp, m_SrcBpp, m_bHasAlpha;\r
-    IFX_ScanlineComposer*      m_pDestBitmap;\r
-    int                m_DestWidth, m_DestHeight;\r
-    FX_RECT    m_DestClip;\r
-    FX_LPBYTE  m_pDestScanline;\r
-    FX_LPBYTE   m_pDestMaskScanline;\r
-    FX_RECT    m_SrcClip;\r
-    const CFX_DIBSource*       m_pSource;\r
-    FX_DWORD*  m_pSrcPalette;\r
-    int                m_SrcWidth, m_SrcHeight;\r
-    int                m_SrcPitch, m_InterPitch;\r
-    int m_ExtraMaskPitch;\r
-    unsigned char*     m_pInterBuf;\r
-    unsigned char*     m_pExtraAlphaBuf;\r
-    int                m_TransMethod;\r
-    int        m_Flags;\r
-    CWeightTable       m_WeightTable;\r
-    int                m_CurRow;\r
-    FX_BOOL    StartStretchHorz();\r
-    FX_BOOL    ContinueStretchHorz(IFX_Pause* pPause);\r
-    void       StretchVert();\r
-    int                m_State;\r
-};\r
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_SRC_FXGE_DIB_DIB_INT_H_
+#define CORE_SRC_FXGE_DIB_DIB_INT_H_
+
+extern const int SDP_Table[513];
+
+class CPDF_FixedMatrix {
+ public:
+  CPDF_FixedMatrix(const CFX_AffineMatrix& src, int bits) {
+    base = 1 << bits;
+    a = FXSYS_round(src.a * base);
+    b = FXSYS_round(src.b * base);
+    c = FXSYS_round(src.c * base);
+    d = FXSYS_round(src.d * base);
+    e = FXSYS_round(src.e * base);
+    f = FXSYS_round(src.f * base);
+  }
+  inline void Transform(int x, int y, int& x1, int& y1) {
+    x1 = (a * x + c * y + e + base / 2) / base;
+    y1 = (b * x + d * y + f + base / 2) / base;
+  }
+  int a, b, c, d, e, f;
+  int base;
+};
+#define FPDF_HUGE_IMAGE_SIZE 60000000
+struct PixelWeight {
+  int m_SrcStart;
+  int m_SrcEnd;
+  int m_Weights[1];
+};
+class CWeightTable {
+ public:
+  CWeightTable() { m_pWeightTables = NULL; }
+  ~CWeightTable() {
+    FX_Free(m_pWeightTables);
+    m_pWeightTables = NULL;
+  }
+  void Calc(int dest_len,
+            int dest_min,
+            int dest_max,
+            int src_len,
+            int src_min,
+            int src_max,
+            int flags);
+  PixelWeight* GetPixelWeight(int pixel) {
+    return (PixelWeight*)(m_pWeightTables + (pixel - m_DestMin) * m_ItemSize);
+  }
+  int m_DestMin, m_ItemSize;
+  uint8_t* m_pWeightTables;
+};
+class CStretchEngine {
+ public:
+  CStretchEngine(IFX_ScanlineComposer* pDestBitmap,
+                 FXDIB_Format dest_format,
+                 int dest_width,
+                 int dest_height,
+                 const FX_RECT& clip_rect,
+                 const CFX_DIBSource* pSrcBitmap,
+                 int flags);
+  ~CStretchEngine();
+  FX_BOOL Continue(IFX_Pause* pPause);
+
+ public:
+  FXDIB_Format m_DestFormat;
+  int m_DestBpp, m_SrcBpp, m_bHasAlpha;
+  IFX_ScanlineComposer* m_pDestBitmap;
+  int m_DestWidth, m_DestHeight;
+  FX_RECT m_DestClip;
+  uint8_t* m_pDestScanline;
+  uint8_t* m_pDestMaskScanline;
+  FX_RECT m_SrcClip;
+  const CFX_DIBSource* m_pSource;
+  FX_DWORD* m_pSrcPalette;
+  int m_SrcWidth, m_SrcHeight;
+  int m_SrcPitch, m_InterPitch;
+  int m_ExtraMaskPitch;
+  unsigned char* m_pInterBuf;
+  unsigned char* m_pExtraAlphaBuf;
+  int m_TransMethod;
+  int m_Flags;
+  CWeightTable m_WeightTable;
+  int m_CurRow;
+  FX_BOOL StartStretchHorz();
+  FX_BOOL ContinueStretchHorz(IFX_Pause* pPause);
+  void StretchVert();
+  int m_State;
+};
+
+FX_RECT FXDIB_SwapClipBox(FX_RECT& clip,
+                          int width,
+                          int height,
+                          FX_BOOL bFlipX,
+                          FX_BOOL bFlipY);
+
+#endif  // CORE_SRC_FXGE_DIB_DIB_INT_H_