rgb_node.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. type rgb_node_t = {
  2. base?: logic_node_t;
  3. image?: image_t;
  4. };
  5. function rgb_node_create(arg: any): rgb_node_t {
  6. let n: rgb_node_t = {};
  7. n.base = logic_node_create();
  8. n.base.get_as_image = rgb_node_get_as_image;
  9. n.base.get_cached_image = rgb_node_get_cached_image;
  10. return n;
  11. }
  12. function rgb_node_get_as_image(self: rgb_node_t, from: i32): image_t {
  13. if (self.image != null) {
  14. app_notify_on_next_frame(function (self: rgb_node_t) {
  15. image_unload(self.image);
  16. }, self);
  17. }
  18. let f32a = f32_array_create(4);
  19. let raw = parser_logic_get_raw_node(self.base);
  20. let default_value = raw.outputs[0].default_value;
  21. f32a[0] = default_value[0];
  22. f32a[1] = default_value[1];
  23. f32a[2] = default_value[2];
  24. f32a[3] = default_value[3];
  25. self.image = image_from_bytes(f32a.buffer, 1, 1, tex_format_t.RGBA128);
  26. return self.image;
  27. }
  28. function rgb_node_get_cached_image(self: rgb_node_t): image_t {
  29. self.base.get_as_image(self, 0);
  30. return self.image;
  31. }
  32. let rgb_node_def: zui_node_t = {
  33. id: 0,
  34. name: _tr("RGB"),
  35. type: "rgb_node",
  36. x: 0,
  37. y: 0,
  38. color: 0xffb34f5a,
  39. inputs: [],
  40. outputs: [
  41. {
  42. id: 0,
  43. node_id: 0,
  44. name: _tr("Color"),
  45. type: "RGBA",
  46. color: 0xffc7c729,
  47. default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
  48. min: 0.0,
  49. max: 1.0,
  50. precision: 100,
  51. display: 0
  52. }
  53. ],
  54. buttons: [
  55. {
  56. name: _tr("default_value"),
  57. type: "RGBA",
  58. output: 0,
  59. default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
  60. data: null,
  61. min: 0.0,
  62. max: 1.0,
  63. precision: 100,
  64. height: 0
  65. }
  66. ],
  67. width: 0
  68. };