layout_builder_api.c 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. #include <mono-wasi/driver.h>
  2. #include <string.h>
  3. #include <assert.h>
  4. #include "api.h"
  5. __attribute((import_name("subscribe_to_event")))
  6. void subscribe_to_event(int32_t elementId, char* eventName, int32_t length);
  7. __attribute__((import_name("state_changed")))
  8. void state_changed(uint32_t elementId, uint8_t* data, int32_t length);
  9. void internal_subscribe_to_event(int32_t elementId, MonoString* eventName)
  10. {
  11. char* eventNameString = mono_wasm_string_get_utf8(eventName);
  12. subscribe_to_event(elementId, eventNameString, strlen(eventNameString));
  13. }
  14. __attribute((export_name("raise_element_event")))
  15. void raise_element_event(int elementId, const char* eventName)
  16. {
  17. MonoMethod* method = lookup_interop_method("EventRaised");
  18. void* args[] = { &elementId, mono_wasm_string_from_js(eventName) };
  19. invoke_interop_method(method, args);
  20. free(method);
  21. }
  22. void attach_layout_builder_calls()
  23. {
  24. mono_add_internal_call("PixiEditor.Extensions.Wasm.Interop::SubscribeToEvent", internal_subscribe_to_event);
  25. mono_add_internal_call("PixiEditor.Extensions.Wasm.Interop::StateChanged", state_changed);
  26. }