git @ Cat's Eye Technologies Bezier-Knots / master demo / bezier-knots-launcher.js
master

Tree @master (Download .tar.gz)

bezier-knots-launcher.js @masterraw · history · blame

// SPDX-FileCopyrightText: Chris Pressey, the creator of this work, has dedicated it to the public domain.
// For more information, please refer to <https://unlicense.org/>
// SPDX-License-Identifier: Unlicense

/*
 * dam-plus-widgets-0.2.js, dam-download-image-button.js, and rigamaroads.js should be loaded before this.
 * After this is loaded, call launch() to start the gewgaw.
 */

function launch(config) {
    var div=DAM.maker('div'), button=DAM.maker('button'), canvas=DAM.maker('canvas');

    var can = canvas({ width: 600, height: 600 });
    config.container.appendChild(can);

    var gewgaw = new BezierKnots().init({
        canvas: can,
        lineWidth: 10,
    });

    var controlPanel = div(
        div(
            { id: "panel-container" },
            div(
                DAM.makeDownloadImageButton({
                    canvas: can,
                    basename: "bezier-knots"
                })
            ),
            div(
                DAM.makeRange({
                    title: "Line thickness",
                    min: 1,
                    max: 30,
                    value: 10,
                    onchange: function(v) {
                        gewgaw.lineWidth = v;
                        gewgaw.redraw();
                    }
                })
            ),
            div(
                DAM.makeRange({
                    title: "Edge thickness",
                    min: 0,
                    max: 20,
                    value: 3,
                    onchange: function(v) {
                        gewgaw.edgeWidth = v;
                        gewgaw.redraw();
                    }
                })
            ),
            div(
                DAM.makeRange({
                    title: "Number of segments",
                    min: 1,
                    max: 20,
                    value: 6,
                    onchange: function(v) {
                        gewgaw.numSegments = v;
                        gewgaw.reroll();
                    }
                })
            ),
            div(
                DAM.makeRange({
                    title: "Number of rings",
                    min: 1,
                    max: 20,
                    value: 6,
                    onchange: function(v) {
                        gewgaw.numRadii = v;
                        gewgaw.reroll();
                    }
                })
            ),
            div(
                button("Re-roll", {
                    onclick: function() {
                        gewgaw.reroll();
                    }
                })
            )
        )
    );
    config.container.appendChild(controlPanel);
}