1 /*
2  * Copyright (C) 2010, Pino Toscano <pino@kde.org>
3  * Copyright (C) 2018, Zsombor Hollay-Horvath <hollay.horvath@gmail.com>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2, or (at your option)
8  * any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
18  */
19 
20 #ifndef POPPLER_IMAGE_H
21 #define POPPLER_IMAGE_H
22 
23 #include "poppler-global.h"
24 #include "poppler-rectangle.h"
25 
26 namespace poppler {
27 
28 class image_private;
29 
30 class POPPLER_CPP_EXPORT image
31 {
32 public:
33     enum format_enum
34     {
35         format_invalid,
36         format_mono,
37         format_rgb24,
38         format_argb32,
39         format_gray8,
40         format_bgr24
41     };
42 
43     image();
44     image(int iwidth, int iheight, format_enum iformat);
45     image(char *idata, int iwidth, int iheight, format_enum iformat);
46     image(const image &img);
47     ~image();
48 
49     bool is_valid() const;
50     format_enum format() const;
51     int width() const;
52     int height() const;
53     char *data();
54     const char *const_data() const;
55     int bytes_per_row() const;
56 
57     image copy(const rect &r = rect()) const;
58 
59     bool save(const std::string &file_name, const std::string &out_format, int dpi = -1) const;
60 
61     static std::vector<std::string> supported_image_formats();
62 
63     image &operator=(const image &img);
64 
65 private:
66     void detach();
67 
68     image_private *d;
69     friend class image_private;
70 };
71 
72 }
73 
74 #endif
75