diff options
author | Karroffel <therzog@mail.de> | 2017-03-06 08:49:24 +0100 |
---|---|---|
committer | Karroffel <therzog@mail.de> | 2017-03-06 08:49:24 +0100 |
commit | 632c953e4211eeddf9932918a26f0d2101c3fc38 (patch) | |
tree | 34f11acb2246c6ddc0d49e436daafb2cfc22069d /include/godot_cpp/core/Image.hpp | |
parent | 92e1f553ec7b6c609a8503a0d9bbf21f236a9805 (diff) | |
download | redot-cpp-632c953e4211eeddf9932918a26f0d2101c3fc38.tar.gz |
buuunch of stuff
Diffstat (limited to 'include/godot_cpp/core/Image.hpp')
-rw-r--r-- | include/godot_cpp/core/Image.hpp | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/include/godot_cpp/core/Image.hpp b/include/godot_cpp/core/Image.hpp new file mode 100644 index 0000000..5b1322e --- /dev/null +++ b/include/godot_cpp/core/Image.hpp @@ -0,0 +1,129 @@ +#ifndef IMAGE_H +#define IMAGE_H + +#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 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 |