From d387bdf1b2f44b775e8acd222bf46d1c4454bde6 Mon Sep 17 00:00:00 2001 From: KrabCode Date: Sat, 10 Feb 2024 18:24:29 +0100 Subject: [PATCH] new example: UtilityMethods, #288 --- .../UtilityMethods/UtilityMethods.pde | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 src/main/java/com/krab/lazy/examples/UtilityMethods/UtilityMethods.pde diff --git a/src/main/java/com/krab/lazy/examples/UtilityMethods/UtilityMethods.pde b/src/main/java/com/krab/lazy/examples/UtilityMethods/UtilityMethods.pde new file mode 100644 index 00000000..976e2dc7 --- /dev/null +++ b/src/main/java/com/krab/lazy/examples/UtilityMethods/UtilityMethods.pde @@ -0,0 +1,89 @@ +import com.krab.lazy.*; + +LazyGui gui; + +void setup() { + size(800, 800, P2D); + gui = new LazyGui(this); +} + +void draw() { + background(gui.colorPicker("background", color(36)).hex); + translate(width/2, height/2); + + gui.pushFolder("rect"); + pushMatrix(); + transform(); + PVector size = gui.plotXY("size", 300, 100); + style(); + rect(0, 0, size.x, size.y); + popMatrix(); + gui.popFolder(); + + gui.pushFolder("text"); + pushMatrix(); + transform(); + font(); + text(gui.text("text", "hello"), 0, 0); + popMatrix(); + gui.popFolder(); +} + +void transform() { + PVector pos = gui.plotXY("pos"); + translate(pos.x, pos.y); + rotate(gui.slider("rotate")); +} + +void style() { + gui.pushFolder("style"); + strokeWeight(gui.slider("weight", 4)); + stroke(gui.colorPicker("stroke", color(0)).hex); + fill(gui.colorPicker("fill", color(200)).hex); + String rectMode = gui.radio("rect mode", new String[]{"center", "corner"}); + if("center".equals(rectMode)){ + rectMode(CENTER); + }else{ + rectMode(CORNER); + } + gui.popFolder(); +} + +// font() related fields +HashMap fontCache = new HashMap(); +HashMap xAligns; +HashMap yAligns; + +void font() { + gui.pushFolder("font"); + fill(gui.colorPicker("fill", color(0)).hex); + int size = gui.sliderInt("size", 64); + if (xAligns == null || yAligns == null) { + xAligns = new HashMap(); + xAligns.put("left", LEFT); + xAligns.put("center", CENTER); + xAligns.put("right", RIGHT); + yAligns = new HashMap(); + yAligns.put("top", TOP); + yAligns.put("center", CENTER); + yAligns.put("bottom", BOTTOM); + } + String xAlignSelection = gui.radio("align x", xAligns.keySet().toArray(new String[0]), "center"); + String yAlignSelection = gui.radio("align y", yAligns.keySet().toArray(new String[0]), "center"); + textAlign(xAligns.get(xAlignSelection), yAligns.get(yAlignSelection)); + String fontName = gui.text("font name", "Arial"); + if (gui.button("list fonts")) { + String[] fonts = PFont.list(); + for (String font : fonts) { + println(font); + } + } + String fontKey = fontName + " | " + size; + if (!fontCache.containsKey(fontKey)) { + PFont loadedFont = createFont(fontName, size); + fontCache.put(fontKey, loadedFont); + } + PFont cachedFont = fontCache.get(fontKey); + textFont(cachedFont); + gui.popFolder(); +}