From a35919634834d9f6b14c14ef583dcd35d72a299b Mon Sep 17 00:00:00 2001 From: Martin White Date: Sun, 26 Jul 2020 21:16:54 +0100 Subject: [PATCH] Struct tidy --- vapi/raylib.vapi | 303 +++++++++++++++++++++++++---------------------- 1 file changed, 162 insertions(+), 141 deletions(-) diff --git a/vapi/raylib.vapi b/vapi/raylib.vapi index b2a3b01..31a9372 100644 --- a/vapi/raylib.vapi +++ b/vapi/raylib.vapi @@ -141,22 +141,6 @@ namespace Raylib { float height; } - // // Texture2D type - // // NOTE: Data stored in GPU memory - // typedef struct Texture2D { - // unsigned int id; // OpenGL texture id - // int width; // Texture base width - // int height; // Texture base height - // int mipmaps; // Mipmap levels, 1 by default - // int format; // Data format (PixelFormat type) - // } Texture2D; - - // // Texture type, same as Texture2D - // typedef Texture2D Texture; - - // // TextureCubemap type, actually, same as Texture2D - // typedef Texture2D TextureCubemap; - // // RenderTexture2D type, for texture rendering // typedef struct RenderTexture2D { // unsigned int id; // OpenGL Framebuffer Object (FBO) id @@ -388,21 +372,21 @@ namespace Raylib { [Flags] [CCode (cprefix = "", has_type_id = false)] public enum ConfigFlag { - FLAG_RESERVED , //= 1, // Reserved - FLAG_FULLSCREEN_MODE , //= 2, // Set to run program in fullscreen - FLAG_WINDOW_RESIZABLE , //= 4, // Set to allow resizable window - FLAG_WINDOW_UNDECORATED , //= 8, // Set to disable window decoration (frame and buttons) - FLAG_WINDOW_TRANSPARENT , //= 16, // Set to allow transparent window - FLAG_MSAA_4X_HINT , //= 32, // Set to try enabling MSAA 4X - FLAG_VSYNC_HINT , //= 64, // Set to try enabling V-Sync on GPU - FLAG_WINDOW_HIDDEN , //= 128, // Set to create the window initially hidden - FLAG_WINDOW_ALWAYS_RUN //= 256 // Set to allow windows running while minimized + FLAG_RESERVED, // Reserved + FLAG_FULLSCREEN_MODE, // Set to run program in fullscreen + FLAG_WINDOW_RESIZABLE, // Set to allow resizable window + FLAG_WINDOW_UNDECORATED, // Set to disable window decoration (frame and buttons) + FLAG_WINDOW_TRANSPARENT, // Set to allow transparent window + FLAG_MSAA_4X_HINT, // Set to try enabling MSAA 4X + FLAG_VSYNC_HINT, // Set to try enabling V-Sync on GPU + FLAG_WINDOW_HIDDEN, // Set to create the window initially hidden + FLAG_WINDOW_ALWAYS_RUN // Set to allow windows running while minimized } // Trace log type [CCode (cprefix = "", has_type_id = false)] public enum TraceLogType { - LOG_ALL, // = 0, // Display all logs + LOG_ALL, // Display all logs LOG_TRACE, LOG_DEBUG, LOG_INFO, @@ -557,7 +541,7 @@ namespace Raylib { [CCode (cprefix = "GAMEPAD_BUTTON_", has_type_id = false)] public enum GamepadButton { // This is here just for error checking - UNKNOWN = 0, + UNKNOWN, // This is normally a DPAD LEFT_FACE_UP, LEFT_FACE_RIGHT, @@ -588,7 +572,7 @@ namespace Raylib { [CCode (cprefix = "", has_type_id = false)] public enum GamepadAxis { // This is here just for error checking - GAMEPAD_AXIS_UNKNOWN = 0, + GAMEPAD_AXIS_UNKNOWN, // Left stick GAMEPAD_AXIS_LEFT_X, GAMEPAD_AXIS_LEFT_Y, @@ -601,66 +585,66 @@ namespace Raylib { } // Shader location point type - [CCode (cprefix = "", has_type_id = false)] + [CCode (cprefix = "LOC_", has_type_id = false)] public enum ShaderLocationIndex { - LOC_VERTEX_POSITION = 0, - LOC_VERTEX_TEXCOORD01, - LOC_VERTEX_TEXCOORD02, - LOC_VERTEX_NORMAL, - LOC_VERTEX_TANGENT, - LOC_VERTEX_COLOR, - LOC_MATRIX_MVP, - LOC_MATRIX_MODEL, - LOC_MATRIX_VIEW, - LOC_MATRIX_PROJECTION, - LOC_VECTOR_VIEW, - LOC_COLOR_DIFFUSE, - LOC_COLOR_SPECULAR, - LOC_COLOR_AMBIENT, - LOC_MAP_ALBEDO, // LOC_MAP_DIFFUSE - LOC_MAP_METALNESS, // LOC_MAP_SPECULAR - LOC_MAP_NORMAL, - LOC_MAP_ROUGHNESS, - LOC_MAP_OCCLUSION, - LOC_MAP_EMISSION, - LOC_MAP_HEIGHT, - LOC_MAP_CUBEMAP, - LOC_MAP_IRRADIANCE, - LOC_MAP_PREFILTER, - LOC_MAP_BRDF + VERTEX_POSITION, + VERTEX_TEXCOORD01, + VERTEX_TEXCOORD02, + VERTEX_NORMAL, + VERTEX_TANGENT, + VERTEX_COLOR, + MATRIX_MVP, + MATRIX_MODEL, + MATRIX_VIEW, + MATRIX_PROJECTION, + VECTOR_VIEW, + COLOR_DIFFUSE, + COLOR_SPECULAR, + COLOR_AMBIENT, + MAP_ALBEDO, // LOC_MAP_DIFFUSE + MAP_METALNESS, // LOC_MAP_SPECULAR + MAP_NORMAL, + MAP_ROUGHNESS, + MAP_OCCLUSION, + MAP_EMISSION, + MAP_HEIGHT, + MAP_CUBEMAP, + MAP_IRRADIANCE, + MAP_PREFILTER, + MAP_BRDF } // #define LOC_MAP_DIFFUSE LOC_MAP_ALBEDO // #define LOC_MAP_SPECULAR LOC_MAP_METALNESS // Shader uniform data types - [CCode (cprefix = "", has_type_id = false)] + [CCode (cprefix = "UNIFORM_", has_type_id = false)] public enum ShaderUniformDataType { - UNIFORM_FLOAT = 0, - UNIFORM_VEC2, - UNIFORM_VEC3, - UNIFORM_VEC4, - UNIFORM_INT, - UNIFORM_IVEC2, - UNIFORM_IVEC3, - UNIFORM_IVEC4, - UNIFORM_SAMPLER2D + FLOAT, + VEC2, + VEC3, + VEC4, + INT, + IVEC2, + IVEC3, + IVEC4, + SAMPLER2D } // Material map type - [CCode (cprefix = "", has_type_id = false)] + [CCode (cprefix = "MAP_", has_type_id = false)] public enum MaterialMapType { - MAP_ALBEDO = 0, // MAP_DIFFUSE - MAP_METALNESS = 1, // MAP_SPECULAR - MAP_NORMAL = 2, - MAP_ROUGHNESS = 3, - MAP_OCCLUSION, - MAP_EMISSION, - MAP_HEIGHT, - MAP_CUBEMAP, // NOTE: Uses GL_TEXTURE_CUBE_MAP - MAP_IRRADIANCE, // NOTE: Uses GL_TEXTURE_CUBE_MAP - MAP_PREFILTER, // NOTE: Uses GL_TEXTURE_CUBE_MAP - MAP_BRDF + ALBEDO, // MAP_DIFFUSE + METALNESS, // MAP_SPECULAR + NORMAL, + ROUGHNESS, + OCCLUSION, + EMISSION, + HEIGHT, + CUBEMAP, // NOTE: Uses GL_TEXTURE_CUBE_MAP + IRRADIANCE, // NOTE: Uses GL_TEXTURE_CUBE_MAP + PREFILTER, // NOTE: Uses GL_TEXTURE_CUBE_MAP + BRDF } // #define MAP_DIFFUSE MAP_ALBEDO @@ -670,7 +654,7 @@ namespace Raylib { // NOTE: Support depends on OpenGL version and platform [CCode (cprefix = "", has_type_id = false)] public enum PixelFormat { - UNCOMPRESSED_GRAYSCALE = 1, // 8 bit per pixel (no alpha) + UNCOMPRESSED_GRAYSCALE, // 8 bit per pixel (no alpha) UNCOMPRESSED_GRAY_ALPHA, // 8*2 bpp (2 channels) UNCOMPRESSED_R5G6B5, // 16 bpp UNCOMPRESSED_R8G8B8, // 24 bpp @@ -696,91 +680,91 @@ namespace Raylib { // Texture parameters: filter mode // NOTE 1: Filtering considers mipmaps if available in the texture // NOTE 2: Filter is accordingly set for minification and magnification - [CCode (cprefix = "", has_type_id = false)] + [CCode (cprefix = "FILTER_", has_type_id = false)] public enum TextureFilterMode { - FILTER_POINT = 0, // No filter, just pixel aproximation - FILTER_BILINEAR, // Linear filtering - FILTER_TRILINEAR, // Trilinear filtering (linear with mipmaps) - FILTER_ANISOTROPIC_4X, // Anisotropic filtering 4x - FILTER_ANISOTROPIC_8X, // Anisotropic filtering 8x - FILTER_ANISOTROPIC_16X, // Anisotropic filtering 16x + POINT, // No filter, just pixel aproximation + BILINEAR, // Linear filtering + TRILINEAR, // Trilinear filtering (linear with mipmaps) + ANISOTROPIC_4X, // Anisotropic filtering 4x + ANISOTROPIC_8X, // Anisotropic filtering 8x + ANISOTROPIC_16X, // Anisotropic filtering 16x } // Cubemap layout type - [CCode (cprefix = "", has_type_id = false)] + [CCode (cprefix = "CUBEMAP_", has_type_id = false)] public enum CubemapLayoutType { - CUBEMAP_AUTO_DETECT = 0, // Automatically detect layout type - CUBEMAP_LINE_VERTICAL, // Layout is defined by a vertical line with faces - CUBEMAP_LINE_HORIZONTAL, // Layout is defined by an horizontal line with faces - CUBEMAP_CROSS_THREE_BY_FOUR, // Layout is defined by a 3x4 cross with cubemap faces - CUBEMAP_CROSS_FOUR_BY_THREE, // Layout is defined by a 4x3 cross with cubemap faces - CUBEMAP_PANORAMA // Layout is defined by a panorama image (equirectangular map) + AUTO_DETECT, // Automatically detect layout type + LINE_VERTICAL, // Layout is defined by a vertical line with faces + LINE_HORIZONTAL, // Layout is defined by an horizontal line with faces + CROSS_THREE_BY_FOUR, // Layout is defined by a 3x4 cross with cubemap faces + CROSS_FOUR_BY_THREE, // Layout is defined by a 4x3 cross with cubemap faces + PANORAMA // Layout is defined by a panorama image (equirectangular map) } // Texture parameters: wrap mode - [CCode (cprefix = "", has_type_id = false)] + [CCode (cprefix = "WRAP_", has_type_id = false)] public enum TextureWrapMode { - WRAP_REPEAT = 0, // Repeats texture in tiled mode - WRAP_CLAMP, // Clamps texture to edge pixel in tiled mode - WRAP_MIRROR_REPEAT, // Mirrors and repeats the texture in tiled mode - WRAP_MIRROR_CLAMP // Mirrors and clamps to border the texture in tiled mode + REPEAT, // Repeats texture in tiled mode + CLAMP, // Clamps texture to edge pixel in tiled mode + MIRROR_REPEAT, // Mirrors and repeats the texture in tiled mode + MIRROR_CLAMP // Mirrors and clamps to border the texture in tiled mode } // Font type, defines generation method - [CCode (cprefix = "", has_type_id = false)] + [CCode (cprefix = "FONT_", has_type_id = false)] public enum FontType { - FONT_DEFAULT = 0, // Default font generation, anti-aliased - FONT_BITMAP, // Bitmap font generation, no anti-aliasing - FONT_SDF // SDF font generation, requires external shader - } - + DEFAULT, // Default font generation, anti-aliased + BITMAP, // Bitmap font generation, no anti-aliasing + SDF // SDF font generation, requires external shader + } + // Color blending modes (pre-defined) - [CCode (cprefix = "", has_type_id = false)] + [CCode (cprefix = "BLEND_", has_type_id = false)] public enum BlendMode { - BLEND_ALPHA = 0, // Blend textures considering alpha (default) - BLEND_ADDITIVE, // Blend textures adding colors - BLEND_MULTIPLIED // Blend textures multiplying colors + ALPHA, // Blend textures considering alpha (default) + ADDITIVE, // Blend textures adding colors + MULTIPLIED // Blend textures multiplying colors } // Gestures type // NOTE: It could be used as flags to enable only some gestures [Flags] - [CCode (cprefix = "", has_type_id = false)] + [CCode (cprefix = "GESTURE_", has_type_id = false)] public enum GestureType { - GESTURE_NONE = 0, - GESTURE_TAP = 1, - GESTURE_DOUBLETAP = 2, - GESTURE_HOLD = 4, - GESTURE_DRAG = 8, - GESTURE_SWIPE_RIGHT = 16, - GESTURE_SWIPE_LEFT = 32, - GESTURE_SWIPE_UP = 64, - GESTURE_SWIPE_DOWN = 128, - GESTURE_PINCH_IN = 256, - GESTURE_PINCH_OUT = 512 + NONE, + TAP, + DOUBLETAP, + HOLD, + DRAG, + SWIPE_RIGHT, + SWIPE_LEFT, + SWIPE_UP, + SWIPE_DOWN, + PINCH_IN, + PINCH_OUT } // Camera system modes - [CCode (cprefix = "", has_type_id = false)] + [CCode (cprefix = "CAMERA_", has_type_id = false)] public enum CameraMode { - CAMERA_CUSTOM = 0, - CAMERA_FREE, - CAMERA_ORBITAL, - CAMERA_FIRST_PERSON, - CAMERA_THIRD_PERSON + CUSTOM, + FREE, + ORBITAL, + FIRST_PERSON, + THIRD_PERSON } // Camera projection modes - [CCode (cprefix = "", has_type_id = false)] + [CCode (cprefix = "CAMERA_", has_type_id = false)] public enum CameraType { - CAMERA_PERSPECTIVE = 0, - CAMERA_ORTHOGRAPHIC + PERSPECTIVE, + ORTHOGRAPHIC } // Type of n-patch [CCode (cprefix = "", has_type_id = false)] public enum NPatchType { - NPT_9PATCH = 0, // Npatch defined by 3x3 tiles + NPT_9PATCH, // Npatch defined by 3x3 tiles NPT_3PATCH_VERTICAL, // Npatch defined by 1x3 tiles NPT_3PATCH_HORIZONTAL // Npatch defined by 3x1 tiles } @@ -1365,21 +1349,57 @@ namespace Raylib { // Texture Loading and Drawing Functions (Module: textures) //------------------------------------------------------------------------------------ - // Probable class here... - public class Image { - + // Texture2D type + // NOTE: Data stored in GPU memory + [SimpleType] + [CCode (cname = "Texture2D")] + public struct Texture2D { + uint id; // OpenGL texture id + int width; // Texture base width + int height; // Texture base height + int mipmaps; // Mipmap levels, 1 by default + int format; // Data format (PixelFormat type) } - // // Image type, bpp always RGBA (32bit) - // // NOTE: Data stored in CPU memory (RAM) - // typedef struct Image { - // void *data; // Image raw data - // int width; // Image base width - // int height; // Image base height - // int mipmaps; // Mipmap levels, 1 by default - // int format; // Data format (PixelFormat type) - // } Image; + // // Texture type, same as Texture2D + // typedef Texture2D Texture; + // // TextureCubemap type, actually, same as Texture2D + // typedef Texture2D TextureCubemap; + + + // Image type, bpp always RGBA (32bit) + // NOTE: Data stored in CPU memory (RAM) + [SimpleType] + [CCode (cname = "Image")] + public struct ImageT { + void *data; // Image raw data + int width; // Image base width + int height; // Image base height + int mipmaps; // Mipmap levels, 1 by default + int format; // Data format (PixelFormat type) + } + + //[CCode (cname = "struct bar", free_function = "bar_close", has_type_id = false)] + //[Compact] + //public class Bar { + // [CCode (cname = "bar_open")] + // public static Bar? open (string filename); + //} + + // Probable class here... + [Compact] + [CCode (cname = "struct Image", free_function = "UnloadImage", has_type_id = false)] + public class Image { + [CCode (cname = "LoadImage")] + public Image.from_file(string file_name) { } + [CCode (cname = "LoadImageRaw")] + public Image.from_file_raw(string file_name, int width, int height, int format, int header_size) { } + + [CCode (cname = "ExportImage")] + public void export(string file_name); + + } // Image loading functions // NOTE: This functions do not require GPU access @@ -1453,7 +1473,8 @@ namespace Raylib { // Texture loading functions // NOTE: These functions require GPU access // Texture2D LoadTexture(const char *fileName); // Load texture from file into GPU memory (VRAM) - // Texture2D LoadTextureFromImage(Image image); // Load texture from image data + [CCode (cname = "LoadTextureFromImage")] + public Texture2D load_texture_from_image(ImageT image); // Load texture from image data // TextureCubemap LoadTextureCubemap(Image image, int layoutType); // Load cubemap from image, multiple image cubemap layouts supported // RenderTexture2D LoadRenderTexture(int width, int height); // Load texture for rendering (framebuffer) // void UnloadTexture(Texture2D texture); // Unload texture from GPU memory (VRAM)