|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef SPLASHBITMAP_H |
|
#define SPLASHBITMAP_H |
|
|
|
#include "SplashTypes.h" |
|
#include "poppler_private_export.h" |
|
#include <cstdio> |
|
#include <string> |
|
#include <vector> |
|
|
|
class ImgWriter; |
|
class GfxSeparationColorSpace; |
|
|
|
|
|
|
|
|
|
|
|
class POPPLER_PRIVATE_EXPORT SplashBitmap |
|
{ |
|
public: |
|
|
|
|
|
|
|
|
|
SplashBitmap(int widthA, int heightA, int rowPad, SplashColorMode modeA, bool alphaA, bool topDown = true, const std::vector<GfxSeparationColorSpace *> *separationList = nullptr); |
|
static SplashBitmap *copy(const SplashBitmap *src); |
|
|
|
~SplashBitmap(); |
|
|
|
SplashBitmap(const SplashBitmap &) = delete; |
|
SplashBitmap &operator=(const SplashBitmap &) = delete; |
|
|
|
int getWidth() const { return width; } |
|
int getHeight() const { return height; } |
|
int getRowSize() const { return rowSize; } |
|
int getAlphaRowSize() const { return width; } |
|
int getRowPad() const { return rowPad; } |
|
SplashColorMode getMode() const { return mode; } |
|
SplashColorPtr getDataPtr() { return data; } |
|
unsigned char *getAlphaPtr() { return alpha; } |
|
std::vector<GfxSeparationColorSpace *> *getSeparationList() { return separationList; } |
|
SplashColorConstPtr getDataPtr() const { return data; } |
|
const unsigned char *getAlphaPtr() const { return alpha; } |
|
const std::vector<GfxSeparationColorSpace *> *getSeparationList() const { return separationList; } |
|
|
|
SplashError writePNMFile(char *fileName); |
|
SplashError writePNMFile(FILE *f); |
|
SplashError writeAlphaPGMFile(char *fileName); |
|
|
|
struct WriteImgParams |
|
{ |
|
int jpegQuality = -1; |
|
bool jpegProgressive = false; |
|
std::string tiffCompression; |
|
bool jpegOptimize = false; |
|
}; |
|
|
|
SplashError writeImgFile(SplashImageFileFormat format, const char *fileName, double hDPI, double vDPI, WriteImgParams *params = nullptr); |
|
SplashError writeImgFile(SplashImageFileFormat format, FILE *f, double hDPI, double vDPI, WriteImgParams *params = nullptr); |
|
SplashError writeImgFile(ImgWriter *writer, FILE *f, double hDPI, double vDPI, SplashColorMode imageWriterFormat); |
|
|
|
enum ConversionMode |
|
{ |
|
conversionOpaque, |
|
conversionAlpha, |
|
conversionAlphaPremultiplied |
|
}; |
|
|
|
bool convertToXBGR(ConversionMode conversionMode = conversionOpaque); |
|
|
|
void getPixel(int x, int y, SplashColorPtr pixel); |
|
void getRGBLine(int y, SplashColorPtr line); |
|
void getXBGRLine(int y, SplashColorPtr line, ConversionMode conversionMode = conversionOpaque); |
|
void getCMYKLine(int y, SplashColorPtr line); |
|
unsigned char getAlpha(int x, int y); |
|
|
|
|
|
|
|
|
|
SplashColorPtr takeData(); |
|
|
|
private: |
|
int width, height; |
|
int rowPad; |
|
int rowSize; |
|
|
|
SplashColorMode mode; |
|
SplashColorPtr data; |
|
unsigned char *alpha; |
|
|
|
std::vector<GfxSeparationColorSpace *> *separationList; |
|
|
|
friend class Splash; |
|
|
|
void setJpegParams(ImgWriter *writer, WriteImgParams *params); |
|
}; |
|
|
|
#endif |
|
|