1 //========================================================================
2 //
3 // SplashBitmap.h
4 //
5 //========================================================================
6 
7 //========================================================================
8 //
9 // Modified under the Poppler project - http://poppler.freedesktop.org
10 //
11 // All changes made under the Poppler project to this file are licensed
12 // under GPL version 2 or later
13 //
14 // Copyright (C) 2007 Ilmari Heikkinen <ilmari.heikkinen@gmail.com>
15 // Copyright (C) 2009 Shen Liang <shenzhuxi@gmail.com>
16 // Copyright (C) 2009 Albert Astals Cid <aacid@kde.org>
17 // Copyright (C) 2009 Stefan Thomas <thomas@eload24.com>
18 // Copyright (C) 2010 Adrian Johnson <ajohnson@redneon.com>
19 // Copyright (C) 2010 Harry Roberts <harry.roberts@midnight-labs.org>
20 // Copyright (C) 2010 Christian Feuers�nger <cfeuersaenger@googlemail.com>
21 //
22 // To see a description of the changes please see the Changelog file that
23 // came with your tarball or type make ChangeLog if you are building from git
24 //
25 //========================================================================
26 
27 #ifndef SPLASHBITMAP_H
28 #define SPLASHBITMAP_H
29 
30 #ifdef USE_GCC_PRAGMAS
31 #pragma interface
32 #endif
33 
34 #include "SplashTypes.h"
35 #include <stdio.h>
36 
37 class ImgWriter;
38 
39 //------------------------------------------------------------------------
40 // SplashBitmap
41 //------------------------------------------------------------------------
42 
43 class SplashBitmap {
44 public:
45 
46   // Create a new bitmap.  It will have <widthA> x <heightA> pixels in
47   // color mode <modeA>.  Rows will be padded out to a multiple of
48   // <rowPad> bytes.  If <topDown> is false, the bitmap will be stored
49   // upside-down, i.e., with the last row first in memory.
50   SplashBitmap(int widthA, int heightA, int rowPad,
51 	       SplashColorMode modeA, GBool alphaA,
52 	       GBool topDown = gTrue);
53 
54   ~SplashBitmap();
55 
getWidth()56   int getWidth() { return width; }
getHeight()57   int getHeight() { return height; }
getRowSize()58   int getRowSize() { return rowSize; }
getAlphaRowSize()59   int getAlphaRowSize() { return width; }
getRowPad()60   int getRowPad() { return rowPad; }
getMode()61   SplashColorMode getMode() { return mode; }
getDataPtr()62   SplashColorPtr getDataPtr() { return data; }
getAlphaPtr()63   Guchar *getAlphaPtr() { return alpha; }
64 
65   SplashError writePNMFile(char *fileName);
66   SplashError writePNMFile(FILE *f);
67 
68   SplashError writeImgFile(SplashImageFileFormat format, char *fileName, int hDPI, int vDPI);
69   SplashError writeImgFile(SplashImageFileFormat format, FILE *f, int hDPI, int vDPI);
70   SplashError writeImgFile(ImgWriter *writer, FILE *f, int hDPI, int vDPI);
71 
72   void getPixel(int x, int y, SplashColorPtr pixel);
73   Guchar getAlpha(int x, int y);
74 
75 private:
76 
77   int width, height;		// size of bitmap
78   int rowPad;
79   int rowSize;			// size of one row of data, in bytes
80 				//   - negative for bottom-up bitmaps
81   SplashColorMode mode;		// color mode
82   SplashColorPtr data;		// pointer to row zero of the color data
83   Guchar *alpha;		// pointer to row zero of the alpha data
84 				//   (always top-down)
85 
86   friend class Splash;
87 };
88 
89 #endif
90