diff options
author | pommicket <pommicket@gmail.com> | 2023-06-21 19:02:19 -0400 |
---|---|---|
committer | pommicket <pommicket@gmail.com> | 2023-06-21 19:02:19 -0400 |
commit | e1c530032a27e4c3d81f071ac33575cba9b3a4fe (patch) | |
tree | 43b88e1b2847f78bee53379fcdde75c214a4f5cc /fractiform.js | |
parent | 6f5aaa737ba909b104ba2c511b0e9217a3738892 (diff) |
start widget gen
Diffstat (limited to 'fractiform.js')
-rw-r--r-- | fractiform.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/fractiform.js b/fractiform.js index 816a289..af0cdd1 100644 --- a/fractiform.js +++ b/fractiform.js @@ -27,6 +27,7 @@ let ui_shown = true; let ui_div; let viewport_width, viewport_height; let shift_key = false, ctrl_key = false; +let html_id = 0; let width = 1920, height = 1920; @@ -355,6 +356,39 @@ function type_vec(base_type, component_count) { } } +function add_widget(func) { + let info = widget_info[func]; + console.assert(info !== undefined, 'bad widget name: ' + func); + let root = document.createElement('div'); + root.dataset.func = func; + root.classList.add('widget'); + + { // title + let title = document.createElement('div'); + title.classList.add('widget-title'); + title.appendChild(document.createTextNode(info.name)); + root.appendChild(title); + } + + for (let input of info.inputs) { + let container = document.createElement('div'); + container.classList.add('in'); + let input_element = document.createElement('input'); + input_element.type = 'text'; + input_element.id = 'gen-input-' + (++html_id); + let label = document.createElement('label'); + label.htmlFor = input_element.id; + label.appendChild(document.createTextNode(input.name)); + container.appendChild(input_element); + container.appendChild(document.createTextNode(' ')); + container.appendChild(label); + root.appendChild(container); + } + + ui_div.appendChild(root); + return true; +} + class GLSLGenerationState { constructor(widgets) { this.widgets = widgets; @@ -645,6 +679,8 @@ void main() { sampler_texture = gl.createTexture(); set_up_framebuffer(); + add_widget('output'); + add_widget('mod'); frame(0.0); window.addEventListener('keydown', on_key_press); |