diff --git a/CSharpWasm/CSharpCodeRunner.cs b/CSharpWasm/CSharpCodeRunner.cs index f8d0a86..f2eb44d 100644 --- a/CSharpWasm/CSharpCodeRunner.cs +++ b/CSharpWasm/CSharpCodeRunner.cs @@ -19,6 +19,8 @@ public partial class CSharpCodeRunner static async Task LoadAssemblyFromServer(string assemblyName) { var baseUrl = GetHRef(); + // This line should be changed in future to allow for + // a different dll file than the one generatered var url = $"/CSharpWasmExpo/bin/{assemblyName}"; try diff --git a/CSharpWasm/SplashKitBindings.Generated.cs b/CSharpWasm/SplashKitBindings.Generated.cs index 28c013f..75fb5b6 100644 --- a/CSharpWasm/SplashKitBindings.Generated.cs +++ b/CSharpWasm/SplashKitBindings.Generated.cs @@ -1,752 +1,1214 @@ + + + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices.JavaScript; +using __sklib_ptr = System.IntPtr; + + +[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)] +public delegate void KeyCallback(int code); + + +[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)] +public delegate void FreeNotifier(IntPtr pointer); + + +[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)] +public delegate void SpriteEventHandler(IntPtr s, int evt); + + +[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)] +public delegate void SpriteFloatFunction(IntPtr s, float f); -namespace SplashKitSDK + +[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)] +public delegate void SpriteFunction(IntPtr s); + + + + + +namespace SplashKitSDK { - public partial class SplashKit - { - [JSImport("SplashKitBackendWASM.free_all_animation_scripts", "main.js")] - public static partial void FreeAllAnimationScripts(); + public partial class AnimationScript + { + + + + + } + + public partial class SplashKit + { + [JSImport("SplashKitBackendWASM.audio_ready", "main.js")] + public static partial bool AudioReady(); + + [JSImport("SplashKitBackendWASM.close_audio", "main.js")] + public static partial void CloseAudio(); + + [JSImport("SplashKitBackendWASM.open_audio", "main.js")] + public static partial void OpenAudio(); + + [JSImport("SplashKitBackendWASM.camera_x", "main.js")] + public static partial double CameraX(); + + [JSImport("SplashKitBackendWASM.camera_y", "main.js")] + public static partial double CameraY(); + + [JSImport("SplashKitBackendWASM.move_camera_by", "main.js")] + public static partial void MoveCameraBy(double dx, double dy); + + [JSImport("SplashKitBackendWASM.move_camera_to", "main.js")] + public static partial void MoveCameraTo(double x, double y); + + [JSImport("SplashKitBackendWASM.set_camera_x", "main.js")] + public static partial void SetCameraX(double x); + + [JSImport("SplashKitBackendWASM.set_camera_y", "main.js")] + public static partial void SetCameraY(double y); + + [JSImport("SplashKitBackendWASM.to_screen_x", "main.js")] + public static partial double ToScreenX(double worldX); + + [JSImport("SplashKitBackendWASM.to_screen_y", "main.js")] + public static partial double ToScreenY(double worldY); + + [JSImport("SplashKitBackendWASM.to_world_x", "main.js")] + public static partial double ToWorldX(double screenX); + + [JSImport("SplashKitBackendWASM.to_world_y", "main.js")] + public static partial double ToWorldY(double screenY); + + [JSImport("SplashKitBackendWASM.circles_intersect", "main.js")] + public static partial bool CirclesIntersect(double c1X, double c1Y, double c1Radius, double c2X, double c2Y, double c2Radius); + + [JSImport("SplashKitBackendWASM.cosine", "main.js")] + public static partial float Cosine(float degrees); + + [JSImport("SplashKitBackendWASM.sine", "main.js")] + public static partial float Sine(float degrees); + + [JSImport("SplashKitBackendWASM.tangent", "main.js")] + public static partial float Tangent(float degrees); + + [JSImport("SplashKitBackendWASM.point_in_circle", "main.js")] + public static partial bool PointInCircle(double ptx, double pty, double cx, double cy, double radius); + + [JSImport("SplashKitBackendWASM.point_in_rectangle", "main.js")] + public static partial bool PointInRectangle(double ptx, double pty, double rectX, double rectY, double rectWidth, double rectHeight); + + [JSImport("SplashKitBackendWASM.pop_clip", "main.js")] + public static partial void PopClip(); + + [JSImport("SplashKitBackendWASM.reset_clip", "main.js")] + public static partial void ResetClip(); + + [JSImport("SplashKitBackendWASM.clear_screen", "main.js")] + public static partial void ClearScreen(); + + [JSImport("SplashKitBackendWASM.refresh_screen", "main.js")] + public static partial void RefreshScreen(); + + [JSImport("SplashKitBackendWASM.screen_height", "main.js")] + public static partial int ScreenHeight(); + + [JSImport("SplashKitBackendWASM.screen_width", "main.js")] + public static partial int ScreenWidth(); + + [JSImport("SplashKitBackendWASM.take_screenshot", "main.js")] + public static partial void TakeScreenshot(string basename); + + [JSImport("SplashKitBackendWASM.text_height", "main.js")] + public static partial int TextHeight(string text, string fnt, int fontSize); + + [JSImport("SplashKitBackendWASM.text_width", "main.js")] + public static partial int TextWidth(string text, string fnt, int fontSize); + + [JSImport("SplashKitBackendWASM.process_events", "main.js")] + public static partial void ProcessEvents(); + + [JSImport("SplashKitBackendWASM.quit_requested", "main.js")] + public static partial bool QuitRequested(); + + [JSImport("SplashKitBackendWASM.reset_quit", "main.js")] + public static partial void ResetQuit(); + + [JSImport("SplashKitBackendWASM.any_key_pressed", "main.js")] + public static partial bool AnyKeyPressed(); + + [JSImport("SplashKitBackendWASM.hide_mouse", "main.js")] + public static partial void HideMouse(); + + [JSImport("SplashKitBackendWASM.mouse_shown", "main.js")] + public static partial bool MouseShown(); + + [JSImport("SplashKitBackendWASM.mouse_x", "main.js")] + public static partial float MouseX(); + + [JSImport("SplashKitBackendWASM.mouse_y", "main.js")] + public static partial float MouseY(); + + [JSImport("SplashKitBackendWASM.move_mouse", "main.js")] + public static partial void MoveMouse(double x, double y); + + [JSImport("SplashKitBackendWASM.show_mouse", "main.js")] + public static partial void ShowMouse(); + + [JSImport("SplashKitBackendWASM.show_mouse", "main.js")] + public static partial void ShowMouse(bool show); + + [JSImport("SplashKitBackendWASM.end_reading_text", "main.js")] + public static partial void EndReadingText(); + + [JSImport("SplashKitBackendWASM.reading_text", "main.js")] + public static partial bool ReadingText(); + + [JSImport("SplashKitBackendWASM.text_entry_cancelled", "main.js")] + public static partial bool TextEntryCancelled(); + + [JSImport("SplashKitBackendWASM.text_input", "main.js")] + public static partial string TextInput(); + + [JSImport("SplashKitBackendWASM.add_column", "main.js")] + public static partial void AddColumn(int width); + + [JSImport("SplashKitBackendWASM.add_column_relative", "main.js")] + public static partial void AddColumnRelative(double width); + + [JSImport("SplashKitBackendWASM.button", "main.js")] + public static partial bool Button(string text); + + [JSImport("SplashKitBackendWASM.button", "main.js")] + public static partial bool Button(string labelText, string text); + + [JSImport("SplashKitBackendWASM.checkbox", "main.js")] + public static partial bool Checkbox(string text, bool value); + + [JSImport("SplashKitBackendWASM.checkbox", "main.js")] + public static partial bool Checkbox(string labelText, string text, bool value); + + [JSImport("SplashKitBackendWASM.disable_interface", "main.js")] + public static partial void DisableInterface(); + + [JSImport("SplashKitBackendWASM.draw_interface", "main.js")] + public static partial void DrawInterface(); + + [JSImport("SplashKitBackendWASM.enable_interface", "main.js")] + public static partial void EnableInterface(); + + [JSImport("SplashKitBackendWASM.end_inset", "main.js")] + public static partial void EndInset(string name); + + [JSImport("SplashKitBackendWASM.end_panel", "main.js")] + public static partial void EndPanel(string name); + + [JSImport("SplashKitBackendWASM.end_popup", "main.js")] + public static partial void EndPopup(string name); + + [JSImport("SplashKitBackendWASM.end_treenode", "main.js")] + public static partial void EndTreenode(string labelText); + + [JSImport("SplashKitBackendWASM.enter_column", "main.js")] + public static partial void EnterColumn(); + + [JSImport("SplashKitBackendWASM.get_interface_label_width", "main.js")] + public static partial int GetInterfaceLabelWidth(); + + [JSImport("SplashKitBackendWASM.header", "main.js")] + public static partial bool Header(string labelText); + + [JSImport("SplashKitBackendWASM.interface_enabled", "main.js")] + public static partial bool InterfaceEnabled(); + + [JSImport("SplashKitBackendWASM.label_element", "main.js")] + public static partial void LabelElement(string text); + + [JSImport("SplashKitBackendWASM.last_element_changed", "main.js")] + public static partial bool LastElementChanged(); + + [JSImport("SplashKitBackendWASM.last_element_confirmed", "main.js")] + public static partial bool LastElementConfirmed(); + + [JSImport("SplashKitBackendWASM.leave_column", "main.js")] + public static partial void LeaveColumn(); + + [JSImport("SplashKitBackendWASM.number_box", "main.js")] + public static partial float NumberBox(float value, float step); + + [JSImport("SplashKitBackendWASM.number_box", "main.js")] + public static partial float NumberBox(string labelText, float value, float step); + + [JSImport("SplashKitBackendWASM.open_popup", "main.js")] + public static partial void OpenPopup(string name); + + [JSImport("SplashKitBackendWASM.paragraph", "main.js")] + public static partial void Paragraph(string text); - [JSImport("SplashKitBackendWASM.free_animation_script", "main.js")] - public static partial void FreeAnimationScript(string name); + [JSImport("SplashKitBackendWASM.reset_layout", "main.js")] + public static partial void ResetLayout(); - [JSImport("SplashKitBackendWASM.has_animation_script", "main.js")] - public static partial bool HasAnimationScript(string name); + [JSImport("SplashKitBackendWASM.set_interface_label_width", "main.js")] + public static partial void SetInterfaceLabelWidth(int width); - [JSImport("SplashKitBackendWASM.audio_ready", "main.js")] - public static partial bool AudioReady(); + [JSImport("SplashKitBackendWASM.set_interface_spacing", "main.js")] + public static partial void SetInterfaceSpacing(int spacing, int padding); - [JSImport("SplashKitBackendWASM.close_audio", "main.js")] - public static partial void CloseAudio(); + [JSImport("SplashKitBackendWASM.set_layout_height", "main.js")] + public static partial void SetLayoutHeight(int height); - [JSImport("SplashKitBackendWASM.open_audio", "main.js")] - public static partial void OpenAudio(); + [JSImport("SplashKitBackendWASM.single_line_layout", "main.js")] + public static partial void SingleLineLayout(); - [JSImport("SplashKitBackendWASM.fade_music_in", "main.js")] - public static partial void FadeMusicIn(string name, int ms); + [JSImport("SplashKitBackendWASM.slider", "main.js")] + public static partial float Slider(float value, float minValue, float maxValue); - [JSImport("SplashKitBackendWASM.fade_music_in", "main.js")] - public static partial void FadeMusicIn(string name, int times, int ms); + [JSImport("SplashKitBackendWASM.slider", "main.js")] + public static partial float Slider(string labelText, float value, float minValue, float maxValue); - [JSImport("SplashKitBackendWASM.fade_music_out", "main.js")] - public static partial void FadeMusicOut(int ms); + [JSImport("SplashKitBackendWASM.split_into_columns", "main.js")] + public static partial void SplitIntoColumns(int count); - [JSImport("SplashKitBackendWASM.free_all_music", "main.js")] - public static partial void FreeAllMusic(); + [JSImport("SplashKitBackendWASM.split_into_columns", "main.js")] + public static partial void SplitIntoColumns(int count, int lastWidth); - [JSImport("SplashKitBackendWASM.has_music", "main.js")] - public static partial bool HasMusic(string name); + [JSImport("SplashKitBackendWASM.split_into_columns_relative", "main.js")] + public static partial void SplitIntoColumnsRelative(int count, double lastWidth); - [JSImport("SplashKitBackendWASM.music_playing", "main.js")] - public static partial bool MusicPlaying(); + [JSImport("SplashKitBackendWASM.start_custom_layout", "main.js")] + public static partial void StartCustomLayout(); - [JSImport("SplashKitBackendWASM.music_volume", "main.js")] - public static partial double MusicVolume(); + [JSImport("SplashKitBackendWASM.start_inset", "main.js")] + public static partial void StartInset(string name, int height); - [JSImport("SplashKitBackendWASM.pause_music", "main.js")] - public static partial void PauseMusic(); + [JSImport("SplashKitBackendWASM.start_popup", "main.js")] + public static partial bool StartPopup(string name); - [JSImport("SplashKitBackendWASM.play_music", "main.js")] - public static partial void PlayMusic(string name); + [JSImport("SplashKitBackendWASM.start_treenode", "main.js")] + public static partial bool StartTreenode(string labelText); - [JSImport("SplashKitBackendWASM.play_music", "main.js")] - public static partial void PlayMusic(string name, int times); + [JSImport("SplashKitBackendWASM.text_box", "main.js")] + public static partial string TextBox(string labelText, string value); - [JSImport("SplashKitBackendWASM.resume_music", "main.js")] - public static partial void ResumeMusic(); + [JSImport("SplashKitBackendWASM.text_box", "main.js")] + public static partial string TextBox(string labelText, string value, bool showLabel); - [JSImport("SplashKitBackendWASM.set_music_volume", "main.js")] - public static partial void SetMusicVolume(double volume); + [JSImport("SplashKitBackendWASM.close_log_process", "main.js")] + public static partial void CloseLogProcess(); - [JSImport("SplashKitBackendWASM.stop_music", "main.js")] - public static partial void StopMusic(); + [JSImport("SplashKitBackendWASM.check_network_activity", "main.js")] + public static partial void CheckNetworkActivity(); - [JSImport("SplashKitBackendWASM.fade_all_sound_effects_out", "main.js")] - public static partial void FadeAllSoundEffectsOut(int ms); + [JSImport("SplashKitBackendWASM.close_all_servers", "main.js")] + public static partial void CloseAllServers(); - [JSImport("SplashKitBackendWASM.free_all_sound_effects", "main.js")] - public static partial void FreeAllSoundEffects(); + [JSImport("SplashKitBackendWASM.close_server", "main.js")] + public static partial bool CloseServer(string name); - [JSImport("SplashKitBackendWASM.has_sound_effect", "main.js")] - public static partial bool HasSoundEffect(string name); + [JSImport("SplashKitBackendWASM.has_server", "main.js")] + public static partial bool HasServer(string name); - [JSImport("SplashKitBackendWASM.play_sound_effect", "main.js")] - public static partial void PlaySoundEffect(string name); + [JSImport("SplashKitBackendWASM.hex_str_to_ipv4", "main.js")] + public static partial string HexStrToIpv4(string aHex); - [JSImport("SplashKitBackendWASM.play_sound_effect", "main.js")] - public static partial void PlaySoundEffect(string name, double volume); + [JSImport("SplashKitBackendWASM.hex_to_dec_string", "main.js")] + public static partial string HexToDecString(string aHex); - [JSImport("SplashKitBackendWASM.play_sound_effect", "main.js")] - public static partial void PlaySoundEffect(string name, int times); + [JSImport("SplashKitBackendWASM.hex_to_mac", "main.js")] + public static partial string HexToMac(string hexStr); - [JSImport("SplashKitBackendWASM.play_sound_effect", "main.js")] - public static partial void PlaySoundEffect(string name, int times, double volume); + [JSImport("SplashKitBackendWASM.ipv4_to_hex", "main.js")] + public static partial string Ipv4ToHex(string aIP); - [JSImport("SplashKitBackendWASM.sound_effect_playing", "main.js")] - public static partial bool SoundEffectPlaying(string name); + [JSImport("SplashKitBackendWASM.is_valid_ipv4", "main.js")] + public static partial bool IsValidIpv4(string ip); - [JSImport("SplashKitBackendWASM.stop_sound_effect", "main.js")] - public static partial void StopSoundEffect(string name); + [JSImport("SplashKitBackendWASM.is_valid_mac", "main.js")] + public static partial bool IsValidMac(string macAddress); - [JSImport("SplashKitBackendWASM.camera_x", "main.js")] - public static partial double CameraX(); + [JSImport("SplashKitBackendWASM.mac_to_hex", "main.js")] + public static partial string MacToHex(string macAddress); - [JSImport("SplashKitBackendWASM.camera_y", "main.js")] - public static partial double CameraY(); + [JSImport("SplashKitBackendWASM.my_ip", "main.js")] + public static partial string MyIP(); - [JSImport("SplashKitBackendWASM.move_camera_by", "main.js")] - public static partial void MoveCameraBy(double dx, double dy); + [JSImport("SplashKitBackendWASM.reconnect", "main.js")] + public static partial void Reconnect(string name); - [JSImport("SplashKitBackendWASM.move_camera_to", "main.js")] - public static partial void MoveCameraTo(double x, double y); + [JSImport("SplashKitBackendWASM.close_adc", "main.js")] + public static partial void CloseAdc(string name); - [JSImport("SplashKitBackendWASM.set_camera_x", "main.js")] - public static partial void SetCameraX(double x); + [JSImport("SplashKitBackendWASM.close_all_adc", "main.js")] + public static partial void CloseAllAdc(); - [JSImport("SplashKitBackendWASM.set_camera_y", "main.js")] - public static partial void SetCameraY(double y); + [JSImport("SplashKitBackendWASM.has_gpio", "main.js")] + public static partial bool HasGpio(); - [JSImport("SplashKitBackendWASM.to_screen_x", "main.js")] - public static partial double ToScreenX(double worldX); + [JSImport("SplashKitBackendWASM.raspi_cleanup", "main.js")] + public static partial void RaspiCleanup(); - [JSImport("SplashKitBackendWASM.to_screen_y", "main.js")] - public static partial double ToScreenY(double worldY); + [JSImport("SplashKitBackendWASM.raspi_init", "main.js")] + public static partial void RaspiInit(); - [JSImport("SplashKitBackendWASM.to_world_x", "main.js")] - public static partial double ToWorldX(double screenX); + [JSImport("SplashKitBackendWASM.raspi_spi_close", "main.js")] + public static partial int RaspiSpiClose(int handle); - [JSImport("SplashKitBackendWASM.to_world_y", "main.js")] - public static partial double ToWorldY(double screenY); + [JSImport("SplashKitBackendWASM.raspi_spi_open", "main.js")] + public static partial int RaspiSpiOpen(int channel, int speed, int spiFlags); - [JSImport("SplashKitBackendWASM.circles_intersect", "main.js")] - public static partial bool CirclesIntersect(double c1X, double c1Y, double c1Radius, double c2X, double c2Y, double c2Radius); + [JSImport("SplashKitBackendWASM.free_resource_bundle", "main.js")] + public static partial void FreeResourceBundle(string name); - [JSImport("SplashKitBackendWASM.cosine", "main.js")] - public static partial float Cosine(float degrees); + [JSImport("SplashKitBackendWASM.has_resource_bundle", "main.js")] + public static partial bool HasResourceBundle(string name); - [JSImport("SplashKitBackendWASM.sine", "main.js")] - public static partial float Sine(float degrees); + [JSImport("SplashKitBackendWASM.load_resource_bundle", "main.js")] + public static partial void LoadResourceBundle(string name, string filename); - [JSImport("SplashKitBackendWASM.tangent", "main.js")] - public static partial float Tangent(float degrees); + [JSImport("SplashKitBackendWASM.path_to_resources", "main.js")] + public static partial string PathToResources(); - [JSImport("SplashKitBackendWASM.point_in_circle", "main.js")] - public static partial bool PointInCircle(double ptx, double pty, double cx, double cy, double radius); + [JSImport("SplashKitBackendWASM.set_resources_path", "main.js")] + public static partial void SetResourcesPath(string path); - [JSImport("SplashKitBackendWASM.point_in_rectangle", "main.js")] - public static partial bool PointInRectangle(double ptx, double pty, double rectX, double rectY, double rectWidth, double rectHeight); + [JSImport("SplashKitBackendWASM.read_char", "main.js")] + public static partial char ReadChar(); - [JSImport("SplashKitBackendWASM.pop_clip", "main.js")] - public static partial void PopClip(); + [JSImport("SplashKitBackendWASM.read_line", "main.js")] + public static partial string ReadLine(); - [JSImport("SplashKitBackendWASM.reset_clip", "main.js")] - public static partial void ResetClip(); + [JSImport("SplashKitBackendWASM.terminal_has_input", "main.js")] + public static partial bool TerminalHasInput(); - [JSImport("SplashKitBackendWASM.clear_screen", "main.js")] - public static partial void ClearScreen(); + [JSImport("SplashKitBackendWASM.write", "main.js")] + public static partial void Write(char data); - [JSImport("SplashKitBackendWASM.number_of_displays", "main.js")] - public static partial int NumberOfDisplays(); + [JSImport("SplashKitBackendWASM.write", "main.js")] + public static partial void Write(double data); - [JSImport("SplashKitBackendWASM.refresh_screen", "main.js")] - public static partial void RefreshScreen(); + [JSImport("SplashKitBackendWASM.write", "main.js")] + public static partial void Write(int data); - [JSImport("SplashKitBackendWASM.screen_height", "main.js")] - public static partial int ScreenHeight(); + [JSImport("SplashKitBackendWASM.write", "main.js")] + public static partial void Write(string text); - [JSImport("SplashKitBackendWASM.screen_width", "main.js")] - public static partial int ScreenWidth(); + [JSImport("SplashKitBackendWASM.write_line", "main.js")] + public static partial void WriteLine(char data); - [JSImport("SplashKitBackendWASM.take_screenshot", "main.js")] - public static partial void TakeScreenshot(string basename); + [JSImport("SplashKitBackendWASM.write_line", "main.js")] + public static partial void WriteLine(); - [JSImport("SplashKitBackendWASM.bitmap_height", "main.js")] - public static partial int BitmapHeight(string name); + [JSImport("SplashKitBackendWASM.write_line", "main.js")] + public static partial void WriteLine(double data); - [JSImport("SplashKitBackendWASM.bitmap_width", "main.js")] - public static partial int BitmapWidth(string name); + [JSImport("SplashKitBackendWASM.write_line", "main.js")] + public static partial void WriteLine(int data); - [JSImport("SplashKitBackendWASM.draw_bitmap", "main.js")] - public static partial void DrawBitmap(string name, double x, double y); + [JSImport("SplashKitBackendWASM.write_line", "main.js")] + public static partial void WriteLine(string line); - [JSImport("SplashKitBackendWASM.free_all_bitmaps", "main.js")] - public static partial void FreeAllBitmaps(); + [JSImport("SplashKitBackendWASM.base64_decode", "main.js")] + public static partial string Base64Decode(string input); - [JSImport("SplashKitBackendWASM.has_bitmap", "main.js")] - public static partial bool HasBitmap(string name); + [JSImport("SplashKitBackendWASM.base64_encode", "main.js")] + public static partial string Base64Encode(string input); - [JSImport("SplashKitBackendWASM.font_has_size", "main.js")] - public static partial bool FontHasSize(string name, int fontSize); + [JSImport("SplashKitBackendWASM.bin_to_hex", "main.js")] + public static partial string BinToHex(string binStr); - [JSImport("SplashKitBackendWASM.font_load_size", "main.js")] - public static partial void FontLoadSize(string name, int fontSize); + [JSImport("SplashKitBackendWASM.bin_to_oct", "main.js")] + public static partial string BinToOct(string binStr); - [JSImport("SplashKitBackendWASM.free_all_fonts", "main.js")] - public static partial void FreeAllFonts(); + [JSImport("SplashKitBackendWASM.contains", "main.js")] + public static partial bool Contains(string text, string subtext); - [JSImport("SplashKitBackendWASM.has_font", "main.js")] - public static partial bool HasFont(string name); + [JSImport("SplashKitBackendWASM.convert_to_double", "main.js")] + public static partial double ConvertToDouble(string text); - [JSImport("SplashKitBackendWASM.text_height", "main.js")] - public static partial int TextHeight(string text, string fnt, int fontSize); + [JSImport("SplashKitBackendWASM.convert_to_integer", "main.js")] + public static partial int ConvertToInteger(string text); - [JSImport("SplashKitBackendWASM.text_width", "main.js")] - public static partial int TextWidth(string text, string fnt, int fontSize); + [JSImport("SplashKitBackendWASM.greatest_common_divisor", "main.js")] + public static partial int GreatestCommonDivisor(int number1, int number2); - [JSImport("SplashKitBackendWASM.process_events", "main.js")] - public static partial void ProcessEvents(); + [JSImport("SplashKitBackendWASM.hex_to_bin", "main.js")] + public static partial string HexToBin(string hexStr); - [JSImport("SplashKitBackendWASM.quit_requested", "main.js")] - public static partial bool QuitRequested(); + [JSImport("SplashKitBackendWASM.hex_to_oct", "main.js")] + public static partial string HexToOct(string hexStr); - [JSImport("SplashKitBackendWASM.reset_quit", "main.js")] - public static partial void ResetQuit(); + [JSImport("SplashKitBackendWASM.index_of", "main.js")] + public static partial int IndexOf(string text, string subtext); - [JSImport("SplashKitBackendWASM.any_key_pressed", "main.js")] - public static partial bool AnyKeyPressed(); + [JSImport("SplashKitBackendWASM.is_binary", "main.js")] + public static partial bool IsBinary(string binStr); - [JSImport("SplashKitBackendWASM.hide_mouse", "main.js")] - public static partial void HideMouse(); + [JSImport("SplashKitBackendWASM.is_double", "main.js")] + public static partial bool IsDouble(string text); - [JSImport("SplashKitBackendWASM.mouse_shown", "main.js")] - public static partial bool MouseShown(); + [JSImport("SplashKitBackendWASM.is_hex", "main.js")] + public static partial bool IsHex(string hexStr); - [JSImport("SplashKitBackendWASM.mouse_x", "main.js")] - public static partial float MouseX(); + [JSImport("SplashKitBackendWASM.is_integer", "main.js")] + public static partial bool IsInteger(string text); - [JSImport("SplashKitBackendWASM.mouse_y", "main.js")] - public static partial float MouseY(); + [JSImport("SplashKitBackendWASM.is_number", "main.js")] + public static partial bool IsNumber(string text); - [JSImport("SplashKitBackendWASM.move_mouse", "main.js")] - public static partial void MoveMouse(double x, double y); + [JSImport("SplashKitBackendWASM.is_octal", "main.js")] + public static partial bool IsOctal(string octalStr); - [JSImport("SplashKitBackendWASM.show_mouse", "main.js")] - public static partial void ShowMouse(); + [JSImport("SplashKitBackendWASM.is_prime_number", "main.js")] + public static partial bool IsPrimeNumber(int number); - [JSImport("SplashKitBackendWASM.show_mouse", "main.js")] - public static partial void ShowMouse(bool show); + [JSImport("SplashKitBackendWASM.least_common_multiple", "main.js")] + public static partial int LeastCommonMultiple(int number1, int number2); - [JSImport("SplashKitBackendWASM.end_reading_text", "main.js")] - public static partial void EndReadingText(); + [JSImport("SplashKitBackendWASM.length_of", "main.js")] + public static partial int LengthOf(string text); - [JSImport("SplashKitBackendWASM.reading_text", "main.js")] - public static partial bool ReadingText(); + [JSImport("SplashKitBackendWASM.oct_to_bin", "main.js")] + public static partial string OctToBin(string octalStr); - [JSImport("SplashKitBackendWASM.text_entry_cancelled", "main.js")] - public static partial bool TextEntryCancelled(); + [JSImport("SplashKitBackendWASM.oct_to_hex", "main.js")] + public static partial string OctToHex(string octStr); - [JSImport("SplashKitBackendWASM.text_input", "main.js")] - public static partial string TextInput(); + [JSImport("SplashKitBackendWASM.replace_all", "main.js")] + public static partial string ReplaceAll(string text, string substr, string newText); - [JSImport("SplashKitBackendWASM.add_column", "main.js")] - public static partial void AddColumn(int width); + [JSImport("SplashKitBackendWASM.square_root", "main.js")] + public static partial double SquareRoot(int number); - [JSImport("SplashKitBackendWASM.add_column_relative", "main.js")] - public static partial void AddColumnRelative(double width); + [JSImport("SplashKitBackendWASM.to_lowercase", "main.js")] + public static partial string ToLowercase(string text); - [JSImport("SplashKitBackendWASM.button", "main.js")] - public static partial bool Button(string text); + [JSImport("SplashKitBackendWASM.to_uppercase", "main.js")] + public static partial string ToUppercase(string text); - [JSImport("SplashKitBackendWASM.button", "main.js")] - public static partial bool Button(string labelText, string text); + [JSImport("SplashKitBackendWASM.trim", "main.js")] + public static partial string Trim(string text); - [JSImport("SplashKitBackendWASM.checkbox", "main.js")] - public static partial bool Checkbox(string text, bool value); + [JSImport("SplashKitBackendWASM.rnd", "main.js")] + public static partial int Rnd(int min, int max); - [JSImport("SplashKitBackendWASM.checkbox", "main.js")] - public static partial bool Checkbox(string labelText, string text, bool value); + [JSImport("SplashKitBackendWASM.rnd", "main.js")] + public static partial float Rnd(); - [JSImport("SplashKitBackendWASM.disable_interface", "main.js")] - public static partial void DisableInterface(); + [JSImport("SplashKitBackendWASM.rnd", "main.js")] + public static partial int Rnd(int ubound); - [JSImport("SplashKitBackendWASM.draw_interface", "main.js")] - public static partial void DrawInterface(); + [JSImport("SplashKitBackendWASM.delay", "main.js")] + public static partial void Delay(int milliseconds); - [JSImport("SplashKitBackendWASM.enable_interface", "main.js")] - public static partial void EnableInterface(); + } - [JSImport("SplashKitBackendWASM.end_inset", "main.js")] - public static partial void EndInset(string name); + public partial class Animation + { + - [JSImport("SplashKitBackendWASM.end_panel", "main.js")] - public static partial void EndPanel(string name); + - [JSImport("SplashKitBackendWASM.end_popup", "main.js")] - public static partial void EndPopup(string name); + - [JSImport("SplashKitBackendWASM.end_treenode", "main.js")] - public static partial void EndTreenode(string labelText); + - [JSImport("SplashKitBackendWASM.enter_column", "main.js")] - public static partial void EnterColumn(); + - [JSImport("SplashKitBackendWASM.get_interface_label_width", "main.js")] - public static partial int GetInterfaceLabelWidth(); + - [JSImport("SplashKitBackendWASM.header", "main.js")] - public static partial bool Header(string labelText); + [JSImport("SplashKitBackendWASM.free_all_animation_scripts", "main.js")] + public static partial void FreeAll(); - [JSImport("SplashKitBackendWASM.interface_enabled", "main.js")] - public static partial bool InterfaceEnabled(); + } - [JSImport("SplashKitBackendWASM.label_element", "main.js")] - public static partial void LabelElement(string text); + public partial class Audio + { + - [JSImport("SplashKitBackendWASM.last_element_changed", "main.js")] - public static partial bool LastElementChanged(); + [JSImport("SplashKitBackendWASM.fade_music_out", "main.js")] + public static partial void FadeOut(int ms); - [JSImport("SplashKitBackendWASM.last_element_confirmed", "main.js")] - public static partial bool LastElementConfirmed(); + - [JSImport("SplashKitBackendWASM.leave_column", "main.js")] - public static partial void LeaveColumn(); + - [JSImport("SplashKitBackendWASM.number_box", "main.js")] - public static partial float NumberBox(float value, float step); + [JSImport("SplashKitBackendWASM.pause_music", "main.js")] + public static partial void Pause(); - [JSImport("SplashKitBackendWASM.number_box", "main.js")] - public static partial float NumberBox(string labelText, float value, float step); + [JSImport("SplashKitBackendWASM.resume_music", "main.js")] + public static partial void Resume(); - [JSImport("SplashKitBackendWASM.open_popup", "main.js")] - public static partial void OpenPopup(string name); + [JSImport("SplashKitBackendWASM.stop_music", "main.js")] + public static partial void Stop(); - [JSImport("SplashKitBackendWASM.paragraph", "main.js")] - public static partial void Paragraph(string text); + } - [JSImport("SplashKitBackendWASM.reset_layout", "main.js")] - public static partial void ResetLayout(); + public partial class Music + { + - [JSImport("SplashKitBackendWASM.set_interface_font", "main.js")] - public static partial void SetInterfaceFont(string fnt); + - [JSImport("SplashKitBackendWASM.set_interface_font_size", "main.js")] - public static partial void SetInterfaceFontSize(int size); + } - [JSImport("SplashKitBackendWASM.set_interface_label_width", "main.js")] - public static partial void SetInterfaceLabelWidth(int width); + public partial class SoundEffect + { + - [JSImport("SplashKitBackendWASM.set_interface_spacing", "main.js")] - public static partial void SetInterfaceSpacing(int spacing, int padding); + - [JSImport("SplashKitBackendWASM.set_layout_height", "main.js")] - public static partial void SetLayoutHeight(int height); + - [JSImport("SplashKitBackendWASM.single_line_layout", "main.js")] - public static partial void SingleLineLayout(); + } - [JSImport("SplashKitBackendWASM.slider", "main.js")] - public static partial float Slider(float value, float minValue, float maxValue); + public partial class Camera + { + - [JSImport("SplashKitBackendWASM.slider", "main.js")] - public static partial float Slider(string labelText, float value, float minValue, float maxValue); + - [JSImport("SplashKitBackendWASM.split_into_columns", "main.js")] - public static partial void SplitIntoColumns(int count); + - [JSImport("SplashKitBackendWASM.split_into_columns", "main.js")] - public static partial void SplitIntoColumns(int count, int lastWidth); + [JSImport("SplashKitBackendWASM.move_camera_by", "main.js")] + public static partial void MoveBy(double dx, double dy); - [JSImport("SplashKitBackendWASM.split_into_columns_relative", "main.js")] - public static partial void SplitIntoColumnsRelative(int count, double lastWidth); + [JSImport("SplashKitBackendWASM.move_camera_to", "main.js")] + public static partial void MoveTo(double x, double y); - [JSImport("SplashKitBackendWASM.start_custom_layout", "main.js")] - public static partial void StartCustomLayout(); + - [JSImport("SplashKitBackendWASM.start_inset", "main.js")] - public static partial void StartInset(string name, int height); + - [JSImport("SplashKitBackendWASM.start_popup", "main.js")] - public static partial bool StartPopup(string name); + [JSImport("SplashKitBackendWASM.to_screen_x", "main.js")] + public static partial double ToScreenX(double worldX); - [JSImport("SplashKitBackendWASM.start_treenode", "main.js")] - public static partial bool StartTreenode(string labelText); + [JSImport("SplashKitBackendWASM.to_screen_y", "main.js")] + public static partial double ToScreenY(double worldY); - [JSImport("SplashKitBackendWASM.text_box", "main.js")] - public static partial string TextBox(string value); + [JSImport("SplashKitBackendWASM.to_world_x", "main.js")] + public static partial double ToWorldX(double screenX); - [JSImport("SplashKitBackendWASM.text_box", "main.js")] - public static partial string TextBox(string labelText, string value); + [JSImport("SplashKitBackendWASM.to_world_y", "main.js")] + public static partial double ToWorldY(double screenY); - [JSImport("SplashKitBackendWASM.free_all_json", "main.js")] - public static partial void FreeAllJson(); + - [JSImport("SplashKitBackendWASM.close_log_process", "main.js")] - public static partial void CloseLogProcess(); + } - [JSImport("SplashKitBackendWASM.accept_all_new_connections", "main.js")] - public static partial bool AcceptAllNewConnections(); + public partial class Window + { + - [JSImport("SplashKitBackendWASM.broadcast_message", "main.js")] - public static partial void BroadcastMessage(string aMsg); + - [JSImport("SplashKitBackendWASM.broadcast_message", "main.js")] - public static partial void BroadcastMessage(string aMsg, string name); + - [JSImport("SplashKitBackendWASM.check_network_activity", "main.js")] - public static partial void CheckNetworkActivity(); + - [JSImport("SplashKitBackendWASM.clear_messages", "main.js")] - public static partial void ClearMessages(string name); + - [JSImport("SplashKitBackendWASM.close_all_connections", "main.js")] - public static partial void CloseAllConnections(); + - [JSImport("SplashKitBackendWASM.close_all_servers", "main.js")] - public static partial void CloseAllServers(); + - [JSImport("SplashKitBackendWASM.close_connection", "main.js")] - public static partial bool CloseConnection(string name); + - [JSImport("SplashKitBackendWASM.close_server", "main.js")] - public static partial bool CloseServer(string name); + - [JSImport("SplashKitBackendWASM.has_connection", "main.js")] - public static partial bool HasConnection(string name); + - [JSImport("SplashKitBackendWASM.has_messages", "main.js")] - public static partial bool HasMessages(); + - [JSImport("SplashKitBackendWASM.has_messages", "main.js")] - public static partial bool HasMessages(string name); + - [JSImport("SplashKitBackendWASM.has_new_connections", "main.js")] - public static partial bool HasNewConnections(); + } - [JSImport("SplashKitBackendWASM.has_server", "main.js")] - public static partial bool HasServer(string name); + public partial class Bitmap + { + - [JSImport("SplashKitBackendWASM.hex_str_to_ipv4", "main.js")] - public static partial string HexStrToIpv4(string aHex); + - [JSImport("SplashKitBackendWASM.hex_to_dec_string", "main.js")] - public static partial string HexToDecString(string aHex); + - [JSImport("SplashKitBackendWASM.hex_to_mac", "main.js")] - public static partial string HexToMac(string hexStr); + - [JSImport("SplashKitBackendWASM.ipv4_to_hex", "main.js")] - public static partial string Ipv4ToHex(string aIP); + - [JSImport("SplashKitBackendWASM.is_connection_open", "main.js")] - public static partial bool IsConnectionOpen(string name); + - [JSImport("SplashKitBackendWASM.is_valid_ipv4", "main.js")] - public static partial bool IsValidIpv4(string ip); + - [JSImport("SplashKitBackendWASM.is_valid_mac", "main.js")] - public static partial bool IsValidMac(string macAddress); + - [JSImport("SplashKitBackendWASM.mac_to_hex", "main.js")] - public static partial string MacToHex(string macAddress); + - [JSImport("SplashKitBackendWASM.my_ip", "main.js")] - public static partial string MyIP(); + - [JSImport("SplashKitBackendWASM.read_message_data", "main.js")] - public static partial string ReadMessageData(string name); + - [JSImport("SplashKitBackendWASM.reconnect", "main.js")] - public static partial void Reconnect(string name); + } - [JSImport("SplashKitBackendWASM.release_all_connections", "main.js")] - public static partial void ReleaseAllConnections(); + public partial class Display + { + - [JSImport("SplashKitBackendWASM.send_message_to", "main.js")] - public static partial bool SendMessageTo(string aMsg, string name); + - [JSImport("SplashKitBackendWASM.server_has_new_connection", "main.js")] - public static partial bool ServerHasNewConnection(string name); + - [JSImport("SplashKitBackendWASM.has_gpio", "main.js")] - public static partial bool HasGpio(); + - [JSImport("SplashKitBackendWASM.raspi_cleanup", "main.js")] - public static partial void RaspiCleanup(); + - [JSImport("SplashKitBackendWASM.raspi_init", "main.js")] - public static partial void RaspiInit(); + } - [JSImport("SplashKitBackendWASM.raspi_spi_close", "main.js")] - public static partial int RaspiSpiClose(int handle); + public partial class Font + { + - [JSImport("SplashKitBackendWASM.raspi_spi_open", "main.js")] - public static partial int RaspiSpiOpen(int channel, int speed, int spiFlags); + } - [JSImport("SplashKitBackendWASM.free_resource_bundle", "main.js")] - public static partial void FreeResourceBundle(string name); + public partial class Text + { + [JSImport("SplashKitBackendWASM.free_all_fonts", "main.js")] + public static partial void FreeAll(); - [JSImport("SplashKitBackendWASM.has_resource_bundle", "main.js")] - public static partial bool HasResourceBundle(string name); + [JSImport("SplashKitBackendWASM.text_height", "main.js")] + public static partial int Height(string text, string fnt, int fontSize); - [JSImport("SplashKitBackendWASM.load_resource_bundle", "main.js")] - public static partial void LoadResourceBundle(string name, string filename); + [JSImport("SplashKitBackendWASM.text_width", "main.js")] + public static partial int Width(string text, string fnt, int fontSize); - [JSImport("SplashKitBackendWASM.path_to_resources", "main.js")] - public static partial string PathToResources(); + } - [JSImport("SplashKitBackendWASM.set_resources_path", "main.js")] - public static partial void SetResourcesPath(string path); + public partial class Json + { + } - [JSImport("SplashKitBackendWASM.create_sprite_pack", "main.js")] - public static partial void CreateSpritePack(string name); + public partial class ServerSocket + { + - [JSImport("SplashKitBackendWASM.current_sprite_pack", "main.js")] - public static partial string CurrentSpritePack(); + - [JSImport("SplashKitBackendWASM.draw_all_sprites", "main.js")] - public static partial void DrawAllSprites(); + - [JSImport("SplashKitBackendWASM.free_all_sprites", "main.js")] - public static partial void FreeAllSprites(); + - [JSImport("SplashKitBackendWASM.free_sprite_pack", "main.js")] - public static partial void FreeSpritePack(string name); + } - [JSImport("SplashKitBackendWASM.has_sprite", "main.js")] - public static partial bool HasSprite(string name); + public partial class Connection + { + - [JSImport("SplashKitBackendWASM.has_sprite_pack", "main.js")] - public static partial bool HasSpritePack(string name); + - [JSImport("SplashKitBackendWASM.select_sprite_pack", "main.js")] - public static partial void SelectSpritePack(string name); + - [JSImport("SplashKitBackendWASM.update_all_sprites", "main.js")] - public static partial void UpdateAllSprites(); + } - [JSImport("SplashKitBackendWASM.update_all_sprites", "main.js")] - public static partial void UpdateAllSprites(float pct); + public partial class Message + { + - [JSImport("SplashKitBackendWASM.read_char", "main.js")] - public static partial char ReadChar(); + - [JSImport("SplashKitBackendWASM.read_line", "main.js")] - public static partial string ReadLine(); + - [JSImport("SplashKitBackendWASM.terminal_has_input", "main.js")] - public static partial bool TerminalHasInput(); + - [JSImport("SplashKitBackendWASM.write", "main.js")] - public static partial void Write(char data); + - [JSImport("SplashKitBackendWASM.write", "main.js")] - public static partial void Write(double data); + } - [JSImport("SplashKitBackendWASM.write", "main.js")] - public static partial void Write(int data); + public partial class Networking + { + - [JSImport("SplashKitBackendWASM.write", "main.js")] - public static partial void Write(string text); + } - [JSImport("SplashKitBackendWASM.write_line", "main.js")] - public static partial void WriteLine(char data); + public partial class HttpResponse + { + } - [JSImport("SplashKitBackendWASM.write_line", "main.js")] - public static partial void WriteLine(); + public partial class WebServer + { + - [JSImport("SplashKitBackendWASM.write_line", "main.js")] - public static partial void WriteLine(double data); + - [JSImport("SplashKitBackendWASM.write_line", "main.js")] - public static partial void WriteLine(int data); + } - [JSImport("SplashKitBackendWASM.write_line", "main.js")] - public static partial void WriteLine(string line); + public partial class HttpRequest + { + - [JSImport("SplashKitBackendWASM.free_all_timers", "main.js")] - public static partial void FreeAllTimers(); + - [JSImport("SplashKitBackendWASM.has_timer", "main.js")] - public static partial bool HasTimer(string name); + - [JSImport("SplashKitBackendWASM.pause_timer", "main.js")] - public static partial void PauseTimer(string name); + - [JSImport("SplashKitBackendWASM.reset_timer", "main.js")] - public static partial void ResetTimer(string name); + - [JSImport("SplashKitBackendWASM.resume_timer", "main.js")] - public static partial void ResumeTimer(string name); + - [JSImport("SplashKitBackendWASM.start_timer", "main.js")] - public static partial void StartTimer(string name); + } - [JSImport("SplashKitBackendWASM.stop_timer", "main.js")] - public static partial void StopTimer(string name); + public partial class Sprite + { + - [JSImport("SplashKitBackendWASM.timer_paused", "main.js")] - public static partial bool TimerPaused(string name); + - [JSImport("SplashKitBackendWASM.timer_started", "main.js")] - public static partial bool TimerStarted(string name); + - [JSImport("SplashKitBackendWASM.base64_decode", "main.js")] - public static partial string Base64Decode(string input); + - [JSImport("SplashKitBackendWASM.base64_encode", "main.js")] - public static partial string Base64Encode(string input); + - [JSImport("SplashKitBackendWASM.bin_to_hex", "main.js")] - public static partial string BinToHex(string binStr); + - [JSImport("SplashKitBackendWASM.bin_to_oct", "main.js")] - public static partial string BinToOct(string binStr); + - [JSImport("SplashKitBackendWASM.contains", "main.js")] - public static partial bool Contains(string text, string subtext); + - [JSImport("SplashKitBackendWASM.convert_to_double", "main.js")] - public static partial double ConvertToDouble(string text); + - [JSImport("SplashKitBackendWASM.convert_to_integer", "main.js")] - public static partial int ConvertToInteger(string text); + - [JSImport("SplashKitBackendWASM.greatest_common_divisor", "main.js")] - public static partial int GreatestCommonDivisor(int number1, int number2); + - [JSImport("SplashKitBackendWASM.hex_to_bin", "main.js")] - public static partial string HexToBin(string hexStr); + - [JSImport("SplashKitBackendWASM.hex_to_oct", "main.js")] - public static partial string HexToOct(string hexStr); + - [JSImport("SplashKitBackendWASM.index_of", "main.js")] - public static partial int IndexOf(string text, string subtext); + - [JSImport("SplashKitBackendWASM.is_binary", "main.js")] - public static partial bool IsBinary(string binStr); + - [JSImport("SplashKitBackendWASM.is_double", "main.js")] - public static partial bool IsDouble(string text); + - [JSImport("SplashKitBackendWASM.is_hex", "main.js")] - public static partial bool IsHex(string hexStr); + - [JSImport("SplashKitBackendWASM.is_integer", "main.js")] - public static partial bool IsInteger(string text); + - [JSImport("SplashKitBackendWASM.is_number", "main.js")] - public static partial bool IsNumber(string text); + - [JSImport("SplashKitBackendWASM.is_octal", "main.js")] - public static partial bool IsOctal(string octalStr); + - [JSImport("SplashKitBackendWASM.is_prime_number", "main.js")] - public static partial bool IsPrimeNumber(int number); + - [JSImport("SplashKitBackendWASM.least_common_multiple", "main.js")] - public static partial int LeastCommonMultiple(int number1, int number2); + - [JSImport("SplashKitBackendWASM.length_of", "main.js")] - public static partial int LengthOf(string text); + - [JSImport("SplashKitBackendWASM.oct_to_bin", "main.js")] - public static partial string OctToBin(string octalStr); + - [JSImport("SplashKitBackendWASM.oct_to_hex", "main.js")] - public static partial string OctToHex(string octStr); + - [JSImport("SplashKitBackendWASM.replace_all", "main.js")] - public static partial string ReplaceAll(string text, string substr, string newText); + - [JSImport("SplashKitBackendWASM.square_root", "main.js")] - public static partial double SquareRoot(int number); + - [JSImport("SplashKitBackendWASM.to_lowercase", "main.js")] - public static partial string ToLowercase(string text); + - [JSImport("SplashKitBackendWASM.to_uppercase", "main.js")] - public static partial string ToUppercase(string text); + } - [JSImport("SplashKitBackendWASM.trim", "main.js")] - public static partial string Trim(string text); + public partial class Timer + { + - [JSImport("SplashKitBackendWASM.rnd", "main.js")] - public static partial int Rnd(int min, int max); + - [JSImport("SplashKitBackendWASM.rnd", "main.js")] - public static partial float Rnd(); + } - [JSImport("SplashKitBackendWASM.rnd", "main.js")] - public static partial int Rnd(int ubound); - [JSImport("SplashKitBackendWASM.delay", "main.js")] - public static partial void Delay(int milliseconds); +public struct Matrix2D { - [JSImport("SplashKitBackendWASM.close_all_windows", "main.js")] - public static partial void CloseAllWindows(); - [JSImport("SplashKitBackendWASM.close_current_window", "main.js")] - public static partial void CloseCurrentWindow(); + public double[] Elements; - [JSImport("SplashKitBackendWASM.close_window", "main.js")] - public static partial void CloseWindow(string name); +} - [JSImport("SplashKitBackendWASM.current_window_has_border", "main.js")] - public static partial bool CurrentWindowHasBorder(); +public struct DrawingOptions { - [JSImport("SplashKitBackendWASM.current_window_height", "main.js")] - public static partial int CurrentWindowHeight(); - [JSImport("SplashKitBackendWASM.current_window_is_fullscreen", "main.js")] - public static partial bool CurrentWindowIsFullscreen(); + public IntPtr Dest; + public float Scale_x; + public float Scale_y; + public float Angle; + public float Anchor_offset_x; + public float Anchor_offset_y; + public bool Flip_x; + public bool Flip_y; + public bool Is_part; + public Rectangle Part; + public int Draw_cell; + public DrawingDest Camera; + public int Line_width; + public Animation Anim; - [JSImport("SplashKitBackendWASM.current_window_toggle_border", "main.js")] - public static partial void CurrentWindowToggleBorder(); +} - [JSImport("SplashKitBackendWASM.current_window_toggle_fullscreen", "main.js")] - public static partial void CurrentWindowToggleFullscreen(); +public struct Line { - [JSImport("SplashKitBackendWASM.current_window_width", "main.js")] - public static partial int CurrentWindowWidth(); - [JSImport("SplashKitBackendWASM.current_window_x", "main.js")] - public static partial int CurrentWindowX(); + public Point2D Start_point; + public Point2D End_point; - [JSImport("SplashKitBackendWASM.current_window_y", "main.js")] - public static partial int CurrentWindowY(); +} - [JSImport("SplashKitBackendWASM.has_window", "main.js")] - public static partial bool HasWindow(string caption); +public struct Point2D { - [JSImport("SplashKitBackendWASM.move_current_window_to", "main.js")] - public static partial void MoveCurrentWindowTo(int x, int y); - [JSImport("SplashKitBackendWASM.move_window_to", "main.js")] - public static partial void MoveWindowTo(string name, int x, int y); + public double X; + public double Y; - [JSImport("SplashKitBackendWASM.resize_current_window", "main.js")] - public static partial void ResizeCurrentWindow(int width, int height); +} - [JSImport("SplashKitBackendWASM.set_current_window", "main.js")] - public static partial void SetCurrentWindow(string name); +public struct Quad { - [JSImport("SplashKitBackendWASM.window_close_requested", "main.js")] - public static partial bool WindowCloseRequested(string name); - [JSImport("SplashKitBackendWASM.window_has_border", "main.js")] - public static partial bool WindowHasBorder(string name); + public Point2D[] Points; - [JSImport("SplashKitBackendWASM.window_height", "main.js")] - public static partial int WindowHeight(string name); +} - [JSImport("SplashKitBackendWASM.window_is_fullscreen", "main.js")] - public static partial bool WindowIsFullscreen(string name); +public struct Rectangle { - [JSImport("SplashKitBackendWASM.window_toggle_border", "main.js")] - public static partial void WindowToggleBorder(string name); - [JSImport("SplashKitBackendWASM.window_toggle_fullscreen", "main.js")] - public static partial void WindowToggleFullscreen(string name); + public double X; + public double Y; + public double Width; + public double Height; - [JSImport("SplashKitBackendWASM.window_width", "main.js")] - public static partial int WindowWidth(string name); +} - [JSImport("SplashKitBackendWASM.window_x", "main.js")] - public static partial int WindowX(string name); +public struct Triangle { - [JSImport("SplashKitBackendWASM.window_y", "main.js")] - public static partial int WindowY(string name); - } -} \ No newline at end of file + public Point2D[] Points; + +} + +public struct Vector2D { + + + public double X; + public double Y; + +} +public enum KeyCode{ +UnknownKey = 0, +BackspaceKey = 8, +TabKey = 9, +ClearKey = 12, +ReturnKey = 13, +PauseKey = 19, +EscapeKey = 27, +SpaceKey = 32, +ExclaimKey = 33, +DoubleQuoteKey = 34, +HashKey = 35, +DollarKey = 36, +AmpersandKey = 38, +QuoteKey = 39, +LeftParenKey = 40, +RightParenKey = 41, +AsteriskKey = 42, +PlusKey = 43, +CommaKey = 44, +MinusKey = 45, +PeriodKey = 46, +SlashKey = 47, +Num0Key = 48, +Num1Key = 49, +Num2Key = 50, +Num3Key = 51, +Num4Key = 52, +Num5Key = 53, +Num6Key = 54, +Num7Key = 55, +Num8Key = 56, +Num9Key = 57, +ColonKey = 58, +SemiColonKey = 59, +LessKey = 60, +EqualsKey = 61, +GreaterKey = 62, +QuestionKey = 63, +AtKey = 64, +LeftBracketKey = 91, +BackslashKey = 92, +RightBracketKey = 93, +CaretKey = 94, +UnderscoreKey = 95, +BackquoteKey = 96, +AKey = 97, +BKey = 98, +CKey = 99, +DKey = 100, +EKey = 101, +FKey = 102, +GKey = 103, +HKey = 104, +IKey = 105, +JKey = 106, +KKey = 107, +LKey = 108, +MKey = 109, +NKey = 110, +OKey = 111, +PKey = 112, +QKey = 113, +RKey = 114, +SKey = 115, +TKey = 116, +UKey = 117, +VKey = 118, +WKey = 119, +XKey = 120, +YKey = 121, +ZKey = 122, +DeleteKey = 127, +Keypad0 = 256, +Keypad1 = 257, +Keypad2 = 258, +Keypad3 = 259, +Keypad4 = 260, +Keypad5 = 261, +Keypad6 = 262, +Keypad7 = 263, +Keypad8 = 264, +Keypad9 = 265, +KeypadPeriod = 266, +KeypadDivide = 267, +KeypadMultiply = 268, +KeypadMinus = 269, +KeypadPlus = 270, +KeypadEnter = 271, +KeypadEquals = 272, +UpKey = 273, +DownKey = 274, +RightKey = 275, +LeftKey = 276, +InsertKey = 277, +HomeKey = 278, +EndKey = 279, +PageUpKey = 280, +PageDownKey = 281, +F1Key = 282, +F2Key = 283, +F3Key = 284, +F4Key = 285, +F5Key = 286, +F6Key = 287, +F7Key = 288, +F8Key = 289, +F9Key = 290, +F10Key = 291, +F11Key = 292, +F12Key = 293, +F13Key = 294, +F14Key = 295, +F15Key = 296, +NumLockKey = 300, +CapsLockKey = 301, +ScrollLockKey = 302, +RightShiftKey = 303, +LeftShiftKey = 304, +RightCtrlKey = 305, +LeftCtrlKey = 306, +RightAltKey = 307, +LeftAltKey = 308, +LeftSuperKey = 311, +RightSuperKey = 312, +ModeKey = 313, +HelpKey = 315, +SysReqKey = 317, +MenuKey = 319, +PowerKey = 320, +} +public enum MouseButton{ +NoButton = 0, +LeftButton = 0, +MiddleButton = 0, +RightButton = 0, +MouseX1Button = 0, +MouseX2Button = 0, +} +public enum LogLevel{ +None = 0, +Info = 0, +Debug = 0, +Warning = 0, +Error = 0, +Fatal = 0, +} +public enum LogMode{ +LogNone = 0, +LogConsole = 0, +LogFileOnly = 0, +LogConsoleAndFile = 0, +} +public enum ConnectionType{ +TCP = 0, +UDP = 0, +Unknown = 0, +} +public enum HttpMethod{ +HttpGetMethod = 0, +HttpPostMethod = 0, +HttpPutMethod = 0, +HttpDeleteMethod = 0, +HttpOptionsMethod = 0, +HttpTraceMethod = 0, +UnknownHttpMethod = 0, +} +public enum ResourceKind{ +AnimationResource = 0, +BundleResource = 0, +FontResource = 0, +ImageResource = 0, +JsonResource = 0, +MusicResource = 0, +ServerResource = 0, +SoundResource = 0, +TimerResource = 0, +OtherResource = 0, +} +public enum CollisionTestKind{ +PixelCollisions = 0, +AabbCollisions = 0, +} +public enum SpriteEventKind{ +SpriteArrivedEvent = 0, +SpriteAnimationEndedEvent = 0, +SpriteTouchedEvent = 0, +SpriteClickedEvent = 0, +} +public enum AdcPin{ +AdcPin0 = 0, +AdcPin1 = 1, +AdcPin2 = 2, +AdcPin3 = 3, +AdcPin4 = 4, +AdcPin5 = 5, +AdcPin6 = 6, +AdcPin7 = 7, +} +public enum AdcType{ +Ads7830 = 0, +} +public enum DrawingDest{ +DrawToScreen = 0, +DrawToWorld = 0, +DrawDefault = 0, +} +public enum FontStyle{ +NormalFont = 0, +BoldFont = 1, +ItalicFont = 2, +UnderlineFont = 4, +} +public enum GpioPin{ +Pin1 = 1, +Pin2 = 2, +Pin3 = 3, +Pin4 = 4, +Pin5 = 5, +Pin6 = 6, +Pin7 = 7, +Pin8 = 8, +Pin9 = 9, +Pin10 = 10, +Pin11 = 11, +Pin12 = 12, +Pin13 = 13, +Pin14 = 14, +Pin15 = 15, +Pin16 = 16, +Pin17 = 17, +Pin18 = 18, +Pin19 = 19, +Pin20 = 20, +Pin21 = 21, +Pin22 = 22, +Pin23 = 23, +Pin24 = 24, +Pin25 = 25, +Pin26 = 26, +Pin27 = 27, +Pin28 = 28, +Pin29 = 29, +Pin30 = 30, +Pin31 = 31, +Pin32 = 32, +Pin33 = 33, +Pin34 = 34, +Pin35 = 35, +Pin36 = 36, +Pin37 = 37, +Pin38 = 38, +Pin39 = 39, +Pin40 = 40, +} +public enum GpioPinMode{ +GpioInput = 0, +GpioOutput = 1, +GpioAlt0 = 4, +GpioAlt1 = 5, +GpioAlt2 = 6, +GpioAlt3 = 7, +GpioAlt4 = 3, +GpioAlt5 = 2, +GpioDefaultMode = -1, +} +public enum GpioPinValue{ +GpioDefaultValue = -1, +GpioLow = 0, +GpioHigh = 1, +} +public enum HttpStatusCode{ +HttpStatusOk = 200, +HttpStatusCreated = 201, +HttpStatusNoContent = 204, +HttpStatusMovedPermanently = 301, +HttpStatusFound = 302, +HttpStatusSeeOther = 303, +HttpStatusBadRequest = 400, +HttpStatusUnauthorized = 401, +HttpStatusForbidden = 403, +HttpStatusNotFound = 404, +HttpStatusMethodNotAllowed = 405, +HttpStatusRequestTimeout = 408, +HttpStatusConflict = 409, +HttpStatusInternalServerError = 500, +HttpStatusNotImplemented = 501, +HttpStatusServiceUnavailable = 503, +} +public enum InterfaceStyle{ +FlatDarkStyle = 0, +ShadedDarkStyle = 1, +FlatLightStyle = 2, +ShadedLightStyle = 3, +Bubble = 4, +BubbleMulticolored = 5, +} +public enum MotorDirection{ +MotorForward = 0, +MotorBackward = 0, +} +public enum MotorDriverType{ +L298n = 0, +} +public enum PullUpDown{ +PudOff = 0, +PudDown = 1, +PudUp = 2, +} +} diff --git a/CSharpWasm/bindingGenerator.py b/CSharpWasm/bindingGenerator.py new file mode 100644 index 0000000..06c0426 --- /dev/null +++ b/CSharpWasm/bindingGenerator.py @@ -0,0 +1,346 @@ +import json + + +js_import_binding = "SplashKitBackendWASM." + +# Convert CPP types to C# +name_converter = {"point_2d": "Point2D", "drawing_dest": "DrawingDest", "animation": "Animation", "vector_2d": "Vector2D", "circle": "Circle", "quad": "Quad", "color": "Color", "drawing_options": "DrawingOptions", "line": "Line", "rectangle": "Rectangle", "triangle": 'Triangle', "matrix_2d" :"Matrix2D", "resource_kind" :"ResourceKind"} +# Remove Raspberry Pi functionality +raspberry_pi = ["GpioPin", "GpioPinValue"] + + +# Class to construct structs +class StructOSaurusRex(): + # Function to convert types from CPP types to C# types + def convert_type(self, type): + global name_converter + swappable_names = name_converter.keys() + if type in swappable_names: + return name_converter[type] + else: + return type + # Function used to strip types for calling SplashKit methods inside of a relevant class + def strip_types(self, method_text): + global name_converter + output = method_text + standard_type = ["int", "double", "string"] + for name in name_converter.keys(): + if self.convert_type(name) in output: + output = output.replace(self.convert_type(name), "") + + for type in standard_type: + if type in output: + output = output.replace(type, "") + + return output + + # Function to get struct information and signature + def get_struct_name(self, line, struct_index): + struct_name = self.convert_type(line[struct_index]["name"]) + print("Struct name: " + struct_name) + signature = "public struct " + struct_name + " {\n\n" + properties = "" + for attribute in line[struct_index]["fields"].keys(): + properties += " public " + print("==== name: " + attribute + " ======") + if line[struct_index]["fields"][attribute]["is_const"] == "true": + properties += "const " + + properties += self.convert_type(line[struct_index]["fields"][attribute]["type"]) + + # Replace void types to pointers inline with SK translator + if "void" in properties: + properties = properties.replace("void", "IntPtr") + + if line[struct_index]["fields"][attribute]["is_array"]: + properties += "[] " + else: + properties += " " + + properties += attribute.capitalize() + ";\n" + + return struct_name, signature, properties + + # Function to get function methods + def get_struct_methods(self, line, struct_name, struct_index): + # Code to get methods + method_signature = "" + method_name = "" + method_index = 0 + methods = "" + while method_index < len(line[struct_index]["methods"]): + for method in line[struct_index]["methods"][method_index]["signatures"]["csharp"]: + # Apply simple change if thing is struct.method + if struct_name + "." in method: + method_signature = method.replace(struct_name + ".", "") + method_signature = method_signature[:-1] + method_signature = " " + method_signature + methods += method_signature + "{\n" + # Find method struct.method calls + else: + # Get the class the method is from + classes_string = method.split(".") + index = len(classes_string[0]) -1 + class_name = "" + while index > 0: + if classes_string[0][index] == " ": + break + class_name += classes_string[0][index] + index -= 1 + class_name = class_name[::-1] + # Resassemble the method name + method_name = class_name + "." + classes_string[1] + # Remove the semi colon from the end + # Determine if a struct val needs to be replaced by struct this + run_check = True + target = 0 + if " " + struct_name + " " in method_name: + target = method_name.index(" " + struct_name + " ") + elif "(" + struct_name + " " in method: + target = method_name.index("(" + struct_name + " ") + else: + run_check = False + + #Replace struct val with struct this + removal_string = "" + while target < len(method_name) and run_check: + if method_name[target] == ")" or method_name[target] == ",": + break + removal_string += method_name[target] + target += 1 + if run_check: + method_name = method_name.replace(removal_string, " " + struct_name + " this") + method_name = self.strip_types(method_name) + methods += " " + method_name + "\n}\n" + + method_index += 1 + return methods + +# Function to get Enums +def get_enum(line, enum_index): + print(line[enum_index]["name"]) + enum_values = line[enum_index]["signatures"]["csharp"].split(",") + + print(enum_values) + + first = enum_values[0] + first = first[first.index("{") + 1:] + + last = enum_values[len(enum_values) -1] + last = last[:-1] + enum_values[0] = " " + first + enum_values[len(enum_values) -1] = last + enum_name = first.split(".")[0] + enum = "public enum " + enum_name + "{ \n" + + for value in enum_values: + enum += value.split(".")[1] + ",\n" + + enum += "}\n" + + return enum + + + +# function used to replace this in certain classes +def get_function_this(line): + definition = line.split(".") + #Define Function + fun = definition[1] + start = fun.index("(") + fun = fun[:start] + fun += "(this);"; + fun = "SplashKit." + fun + return fun + +function_objects = [] + +# Function to generate bindings for functions within each of class with the api.json file +def get_bindings(line): + global maps + cpp_name = line["name"] + + for definition in line["signatures"]["csharp"]: + fun_getter = False + + if " { get }" in definition: + fun_getter = True + + if "uint" in definition: + continue + + signature = { + "function_definition": "", + "function_to_bind": cpp_name + } + + function_definition = "" + + if "static" in definition and not fun_getter: + location = definition.index("static") + len("static") + part_two = definition[location:] + part_one = definition[:location] + function_definition = part_one + " partial" + part_two + elif not fun_getter: + location = definition.index("public") + len("static") + part_two = definition[location:] + part_one = definition[:location] + function_definition = part_one + " partial" + part_two + + if " { get }" in definition: + fun_to_get = get_function_this(line["signatures"]["csharp"][1]) + function_definition = function_definition.replace(" { get }", "{ get => " + fun_to_get + " }") + signature["function_to_bind"] = False + + if " { set }" in definition: + continue + function_definition = function_definition.replace(" { set }", ";") + + if "." in definition: + classes_string = definition.split(".")[0] + index = len(classes_string) -1 + class_name = "" + while index > 0: + if classes_string[index] == " ": + break + class_name += classes_string[index] + index -= 1 + class_name = class_name[::-1] + + + if class_name not in maps.keys(): + maps[class_name] = [] + else: + continue + + # Remove unsupported types and functions + unsupported_types = ["Connection", "Window", "Sprite", "Json", "Font", "Timer", "FreeNotifier", "AdcPin", "AdcType", "AdcDevice", "AdcDevice", "Bitmap", "WebServer", "HttpRequest", "ushort", "Message", "ServerSocket", "HttpResponse", "KeyCallback", "KeyCode", "MouseButton", "Display", "LogMode", "InterfaceStyle", "SoundEffect", "Music", "AnimationScript", " ref ", "LogLevel", "List"] + unsupported_functions = ["Assign(", "Restart(", "Update(", "Free("] + for el in name_converter.keys(): + if name_converter[el] + " " in function_definition: + print("Removed") + return + + for el in unsupported_types: + if el in function_definition: + return + + for el in unsupported_functions: + if el in function_definition: + return + + # Remove raspberry pi commands + for pi_command in raspberry_pi: + if pi_command in function_definition: + return + + function_definition = function_definition.replace(class_name + ".", "") + + signature["function_definition"] = function_definition + + maps[class_name].append(signature) + + + + +#! Program entry point + +with open("./api.json") as json_data: + data = json.load(json_data) + +catergories = list(data.keys()) +catergory = 0 +struct_data = StructOSaurusRex() + + +maps = {} +structs = "" +enums = "" +# Loop to generate the file +while catergory < len(catergories): + function_index = 0 + struct_index = 0 + enum_index = 0 + while function_index < len(data[catergories[catergory]]["functions"]): + get_bindings(data[catergories[catergory]]["functions"][function_index]) + function_index += 1 + while struct_index < len(data[catergories[catergory]]["structs"]): + print("========================") + struct_name, signature, properties = struct_data.get_struct_name(data[catergories[catergory]]["structs"], struct_index) + methods = struct_data.get_struct_methods(data[catergories[catergory]]["structs"], struct_name, struct_index) + print("========================") + if struct_name != "Color" and struct_name != "Circle": + structs += "\n" + structs += signature + "\n" + structs += properties + "\n" + structs += methods + "}\n" + struct_index += 1 + + while enum_index < len(data[catergories[catergory]]["enums"]): + enums += get_enum(data[catergories[catergory]]["enums"], enum_index) + enum_index += 1 + + catergory += 1 + + +# Output the file +output_file = open("SplashKitBindings.Generated.cs", "w") + +mandatory = """\n + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices.JavaScript; +using __sklib_ptr = System.IntPtr; + + +[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)] +public delegate void KeyCallback(int code);\n + +[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)] +public delegate void FreeNotifier(IntPtr pointer);\n + +[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)] +public delegate void SpriteEventHandler(IntPtr s, int evt);\n + +[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)] +public delegate void SpriteFloatFunction(IntPtr s, float f);\n + +[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)] +public delegate void SpriteFunction(IntPtr s);\n + + +""" + +# Create the generated files +classes = maps.keys() +output = mandatory +" \n\nnamespace SplashKitSDK \n{\n" + +classes_to_remove = ["AdcDevice", "Circle", "Color"] + +for SK_class in classes: + + # remove raspberry Pi related classes and certain other ghost classes. These classes don't exist and are actaully structs + if SK_class in classes_to_remove: + continue + + output += " public partial class " + SK_class + "\n {\n" + + for definition in maps[SK_class]: + + + + if definition["function_to_bind"] != False: + output += " [JSImport(\"SplashKitBackendWASM." + definition["function_to_bind"] +"\", \"main.js\")] \n" + output += " " + definition["function_definition"] + "\n\n" + + output += " } \n\n" + +output += structs +output += enums +output += "} \n" + +# Write the generated files +output_file.write(output) \ No newline at end of file