summaryrefslogtreecommitdiffstats
path: root/include/core/Image.hpp
diff options
context:
space:
mode:
authorKarroffel <therzog@mail.de>2017-05-12 21:53:07 +0200
committerKarroffel <therzog@mail.de>2017-05-12 21:53:07 +0200
commitcf30b0f39ddb2c6acad5d22655c4bca9015d7502 (patch)
tree45a4df6ff16450b334d6c8856a74f4f47f3e9336 /include/core/Image.hpp
parent3969bcf07857b1a4af391bbddb924388cc7f44bb (diff)
downloadredot-cpp-cf30b0f39ddb2c6acad5d22655c4bca9015d7502.tar.gz
rewrote binding generator in python
Diffstat (limited to 'include/core/Image.hpp')
-rw-r--r--include/core/Image.hpp139
1 files changed, 139 insertions, 0 deletions
diff --git a/include/core/Image.hpp b/include/core/Image.hpp
new file mode 100644
index 0000000..cbe3c72
--- /dev/null
+++ b/include/core/Image.hpp
@@ -0,0 +1,139 @@
+#ifndef IMAGE_H
+#define IMAGE_H
+
+#if defined(_WIN32)
+# ifdef _GD_CPP_CORE_API_IMPL
+# define GD_CPP_CORE_API __declspec(dllexport)
+# else
+# define GD_CPP_CORE_API __declspec(dllimport)
+# endif
+#else
+# define GD_CPP_CORE_API
+#endif
+
+#include "Defs.hpp"
+
+#include "Vector2.hpp"
+#include "Rect2.hpp"
+#include "Color.hpp"
+#include "String.hpp"
+
+#include <godot/godot_image.h>
+
+namespace godot {
+
+class PoolByteArray;
+
+class GD_CPP_CORE_API Image {
+ godot_image _godot_image;
+public:
+
+ enum Format {
+
+ FORMAT_L8, //luminance
+ FORMAT_LA8, //luminance-alpha
+ FORMAT_R8,
+ FORMAT_RG8,
+ FORMAT_RGB8,
+ FORMAT_RGBA8,
+ FORMAT_RGB565, //16 bit
+ FORMAT_RGBA4444,
+ FORMAT_RGBA5551,
+ FORMAT_RF, //float
+ FORMAT_RGF,
+ FORMAT_RGBF,
+ FORMAT_RGBAF,
+ FORMAT_RH, //half float
+ FORMAT_RGH,
+ FORMAT_RGBH,
+ FORMAT_RGBAH,
+ FORMAT_DXT1, //s3tc bc1
+ FORMAT_DXT3, //bc2
+ FORMAT_DXT5, //bc3
+ FORMAT_ATI1, //bc4
+ FORMAT_ATI2, //bc5
+ FORMAT_BPTC_RGBA, //btpc bc6h
+ FORMAT_BPTC_RGBF, //float /
+ FORMAT_BPTC_RGBFU, //unsigned float
+ FORMAT_PVRTC2, //pvrtc
+ FORMAT_PVRTC2A,
+ FORMAT_PVRTC4,
+ FORMAT_PVRTC4A,
+ FORMAT_ETC, //etc1
+ FORMAT_ETC2_R11, //etc2
+ FORMAT_ETC2_R11S, //signed, NOT srgb.
+ FORMAT_ETC2_RG11,
+ FORMAT_ETC2_RG11S,
+ FORMAT_ETC2_RGB8,
+ FORMAT_ETC2_RGBA8,
+ FORMAT_ETC2_RGB8A1,
+ FORMAT_MAX
+ };
+
+ enum Interpolation {
+
+ INTERPOLATE_NEAREST,
+ INTERPOLATE_BILINEAR,
+ INTERPOLATE_CUBIC,
+ /* INTERPOLATE GAUSS */
+ };
+
+ enum CompressMode {
+ COMPRESS_16BIT,
+ COMPRESS_S3TC,
+ COMPRESS_PVRTC2,
+ COMPRESS_PVRTC4,
+ COMPRESS_ETC,
+ COMPRESS_ETC2
+ };
+
+
+ Image();
+
+ Image(const int width, const int height, const bool mipmaps, const Format format);
+
+ void blit_rect(const Image& src, const Rect2& src_rect, const Vector2& dest = Vector2(0, 0));
+
+ void brush_transfer(const Image& src, const Image& brush, const Vector2& pos = Vector2(0, 0));
+
+ Image brushed(const Image& src, const Image& brush, const Vector2& pos = Vector2(0, 0));
+
+ Image compressed(const Format format);
+
+ Image converted(const Format format);
+
+ Image decompressed();
+
+ bool empty() const;
+
+ void fix_alpha_edges();
+
+ PoolByteArray get_data();
+
+
+ Format get_format() const;
+
+ int get_height() const;
+
+ Color get_pixel(const int x, const int y, const int mipmap_level = 0);
+
+ Image get_rect(const Rect2& area = Rect2());
+
+ Rect2 get_used_rect() const;
+
+ int get_width() const;
+
+ Error load(const String& path);
+
+ void put_pixel(const int x, const int y, const Color& color, int mipmap_level = 0);
+
+ Image resized(const int x, const int y, const Interpolation interpolation = INTERPOLATE_NEAREST);
+
+ Error save_png(const String& path);
+
+ ~Image();
+};
+
+}
+
+#endif // IMAGE_H