godot-cpp/include/godot/core/Image.h

195 lines
3.3 KiB
C++

#ifndef IMAGE_H
#define IMAGE_H
#include "Defs.h"
#include "Vector2.h"
#include "Rect2.h"
#include "Color.h"
#include "String.h"
#include <godot/godot_image.h>
namespace godot {
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()
{
godot_image_new(&_godot_image);
}
Image(const int width, const int height, const bool mipmaps, const Format format)
{
godot_image_new_with_size_format(&_godot_image, width, height, mipmaps, (godot_image_format) format);
}
void blit_rect(const Image& src, const Rect2& src_rect, const Vector2& dest = Vector2(0, 0))
{
// @DLScript @Todo
}
void brush_transfer(const Image& src, const Image& brush, const Vector2& pos = Vector2(0, 0))
{
// @DLScript @Todo
}
Image brushed(const Image& src, const Image& brush, const Vector2& pos = Vector2(0, 0))
{
return *this; // @DLScript @Todo
}
Image compressed(const Format format)
{
return *this; // @DLScript @Todo
}
Image converted(const Format format)
{
return *this; // @DLScript @Todo
}
Image decompressed()
{
return *this; // @DLScript @Todo
}
bool empty() const
{
return true; // @DLScript @Todo
}
void fix_alpha_edges()
{
// @DLScript @Todo
}
/*
PoolByteArray get_data()
{
// @Todo
}
*/
Format get_format() const
{
return Format::FORMAT_RGBAH; // @DLScript @Todo
}
int get_height() const
{
return godot_image_get_height(&_godot_image);
}
Color get_pixel(const int x, const int y, const int mipmap_level = 0)
{
return Color(); // @DLScript @Todo
}
Image get_rect(const Rect2& area = Rect2())
{
return *this; // @DLScript @Todo
}
Rect2 get_used_rect() const
{
return Rect2(); // @DLScript @Todo
}
int get_width() const
{
return godot_image_get_width(&_godot_image);
}
Error load(const String& path)
{
return (Error) godot_image_load(&_godot_image, (godot_string *) &path);
}
void put_pixel(const int x, const int y, const Color& color, int mipmap_level = 0)
{
// @DLScript @Todo
}
Image resized(const int x, const int y, const Interpolation interpolation = INTERPOLATE_NEAREST)
{
return *this; // @DLScript @Todo
}
Error save_png(const String& path)
{
return (Error) godot_image_save_png(&_godot_image, (godot_string *) &path); // @Todo Error enum
}
~Image()
{
godot_image_destroy(&_godot_image);
}
};
}
#endif // IMAGE_H