PNGWriter.h 1.46 KB
Newer Older
1 2 3 4 5 6 7 8
//========================================================================
//
// PNGWriter.h
//
// This file is licensed under the GPLv2 or later
//
// Copyright (C) 2009 Warren Toomey <wkt@tuhs.org>
// Copyright (C) 2009 Shen Liang <shenzhuxi@gmail.com>
9
// Copyright (C) 2009, 2011-2013 Albert Astals Cid <aacid@kde.org>
Stefan Thomas's avatar
Stefan Thomas committed
10
// Copyright (C) 2009 Stefan Thomas <thomas@eload24.com>
11
// Copyright (C) 2010, 2011, 2013 Adrian Johnson <ajohnson@redneon.com>
Albert Astals Cid's avatar
Albert Astals Cid committed
12
// Copyright (C) 2012 Pino Toscano <pino@kde.org>
13 14 15 16 17 18
//
//========================================================================

#ifndef PNGWRITER_H
#define PNGWRITER_H

19
#include "poppler-config.h"
20 21 22

#ifdef ENABLE_LIBPNG

Stefan Thomas's avatar
Stefan Thomas committed
23
#include "ImgWriter.h"
24

25
struct PNGWriterPrivate;
26

Stefan Thomas's avatar
Stefan Thomas committed
27
class PNGWriter : public ImgWriter
28
{
29 30 31 32 33
public:

  /* RGB        - 3 bytes/pixel
   * RGBA       - 4 bytes/pixel
   * GRAY       - 1 byte/pixel
34
   * MONOCHROME - 8 pixels/byte
35
   * RGB48      - 6 bytes/pixel
36
   */
37
  enum Format { RGB, RGBA, GRAY, MONOCHROME, RGB48 };
38 39 40 41 42 43 44 45

  PNGWriter(Format format = RGB);
  ~PNGWriter();

  void setICCProfile(const char *name, unsigned char *data, int size);
  void setSRGBProfile();


Albert Astals Cid's avatar
Albert Astals Cid committed
46
  bool init(FILE *f, int width, int height, int hDPI, int vDPI) override;
47

Albert Astals Cid's avatar
Albert Astals Cid committed
48 49
  bool writePointers(unsigned char **rowPointers, int rowCount) override;
  bool writeRow(unsigned char **row) override;
50

Albert Astals Cid's avatar
Albert Astals Cid committed
51
  bool close() override;
52 53

private:
54 55 56
  PNGWriter(const PNGWriter &other);
  PNGWriter& operator=(const PNGWriter &other);

57
  PNGWriterPrivate *priv;
58 59 60 61
};

#endif

Stefan Thomas's avatar
Stefan Thomas committed
62
#endif