From 1179fd7471bbd5e3c7f29274f9ec21772dbfdb09 Mon Sep 17 00:00:00 2001 From: Sandy Noble Date: Tue, 10 Nov 2015 22:53:47 +0000 Subject: [PATCH 1/4] Added a safety net for when the machine auto-fit-to-window goes wrong. --- Machine.pde | 8 ++++---- polargraphcontroller.pde | 14 +++++++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Machine.pde b/Machine.pde index 6e7b5bd..9737ae1 100644 --- a/Machine.pde +++ b/Machine.pde @@ -364,7 +364,7 @@ class Machine public void loadDefinitionFromProperties(Properties props) { // get these first because they are important to convert the rest of them - setStepsPerRev(getFloatProperty("machine.motors.stepsPerRev", 800.0)); + setStepsPerRev(getFloatProperty("machine.motors.stepsPerRev", 200.0)); setMMPerRev(getFloatProperty("machine.motors.mmPerRev", 95.0)); // now stepsPerMM and mmPerStep should have been calculated. It's safe to get the rest. @@ -383,12 +383,12 @@ class Machine String pos = getStringProperty("controller.page.position.x", "CENTRE"); float px = 0.0; println("machine size: " + getSize().x + ", " + inSteps(pageSize.x)); - if (pos.equalsIgnoreCase("CENTRE")) - { + if (pos.equalsIgnoreCase("CENTRE")) { px = inMM((getSize().x - pageSize.x) / 2.0); } - else + else { px = getFloatProperty("controller.page.position.x", (int) getDisplayMachine().getPageCentrePosition(pageSize.x)); + } float py = getFloatProperty("controller.page.position.y", 120); diff --git a/polargraphcontroller.pde b/polargraphcontroller.pde index 083c48d..6d799eb 100644 --- a/polargraphcontroller.pde +++ b/polargraphcontroller.pde @@ -58,7 +58,7 @@ import java.lang.reflect.Method; int majorVersionNo = 2; int minorVersionNo = 1; -int buildNo = 0; +int buildNo = 1; String programTitle = "Polargraph Controller v" + majorVersionNo + "." + minorVersionNo + " build " + buildNo; ControlP5 cp5; @@ -190,7 +190,7 @@ float testPenWidthStartSize = 0.5; float testPenWidthEndSize = 2.0; float testPenWidthIncrementSize = 0.5; -int machineStepMultiplier = 1; +int machineStepMultiplier = 8; int maxSegmentLength = 2; @@ -619,6 +619,10 @@ void fitDisplayMachineToWindow() { machineScaling = (targetHeight / machineHeight); println(machineScaling); + if (machineScaling < 0) { + machineScaling = 1.0; + } + getDisplayMachine().getOffset().x = ((gr.getRight() > ir.getRight()) ? gr.getRight() : ir.getRight()) + CONTROL_SPACING.x; getDisplayMachine().getOffset().y = gr.getTop(); @@ -2953,9 +2957,9 @@ void loadFromPropertiesFile() this.currentPenWidth = getFloatProperty("machine.pen.size", 0.8); // motor settings - this.currentMachineMaxSpeed = getFloatProperty("machine.motors.maxSpeed", 600.0); - this.currentMachineAccel = getFloatProperty("machine.motors.accel", 400.0); - this.machineStepMultiplier = getIntProperty("machine.step.multiplier", 1); + this.currentMachineMaxSpeed = getFloatProperty("machine.motors.maxSpeed", 2000.0); + this.currentMachineAccel = getFloatProperty("machine.motors.accel", 2000.0); + this.machineStepMultiplier = getIntProperty("machine.step.multiplier", 8); // serial port this.serialPortNumber = getIntProperty("controller.machine.serialport", 0); From 74636289e5d80370fb54d367881d79e3351e7ed1 Mon Sep 17 00:00:00 2001 From: Sandy Noble Date: Sat, 2 Jan 2016 22:00:12 +0000 Subject: [PATCH 2/4] Got the console working again. --- controlsSetup.pde | 14 +++++++++++++ polargraphcontroller.pde | 45 ++++++++++++++++++++++------------------ 2 files changed, 39 insertions(+), 20 deletions(-) diff --git a/controlsSetup.pde b/controlsSetup.pde index f55adc3..d59d62a 100644 --- a/controlsSetup.pde +++ b/controlsSetup.pde @@ -183,6 +183,18 @@ void updateNumberboxValues() initialiseNumberboxValues(getAllControls()); } +void initConsoleWindow() { + consoleArea = cp5.addTextarea("txt") + .setPosition(300, 100) + .setSize(400, 600) + .setFont(createFont("", 12)) + .setLineHeight(14) + .setColor(color(255)) + .setColorBackground(color(0, 200)) + .setColorForeground(color(255, 100)) + .setVisible(false); +} + Set buildControlsToLockIfBoxNotSpecified() { Set result = new HashSet(); @@ -220,6 +232,8 @@ Set buildControlsToLockIfImageNotLoaded() Map buildAllControls() { + + initConsoleWindow(); Map map = new HashMap(); diff --git a/polargraphcontroller.pde b/polargraphcontroller.pde index 6d799eb..5de4188 100644 --- a/polargraphcontroller.pde +++ b/polargraphcontroller.pde @@ -422,6 +422,9 @@ public Integer windowHeight = 400; public static Integer serialPortNumber = -1; +public Textarea consoleArea = null; +public Println console = null; +public PrintStream savedOut = null; Properties props = null; public static String propertiesFilename = "default.properties.txt"; @@ -485,9 +488,6 @@ public static final int VECTOR_FILTER_LOW_PASS = 0; String storeFilename = "comm.txt"; boolean overwriteExistingStoreFile = true; -//private static Logger logger; -public static Console console; -public boolean useWindowedConsole = false; static boolean drawingTraceShape = true; static boolean retraceShape = true; @@ -1684,12 +1684,7 @@ void keyPressed() } else if (checkKey(CONTROL) && checkKey(KeyEvent.VK_C)) { - if (isUseWindowedConsole()) - setUseWindowedConsole(false); - else - setUseWindowedConsole(true); - - initLogging(); + toggleShowConsole(); } else if (checkKey(CONTROL) && checkKey(KeyEvent.VK_S)) { @@ -1897,7 +1892,7 @@ void mouseWheel(int delta) void setChromaKey(PVector p) { - color col = getDisplayMachine().getPixelAtScreenCoords(p); + color col = getDisplayMachine().getPixelAtScreenCoords(p); chromaKeyColour = col; if (getDisplayMachine().pixelsCanBeExtracted() && isBoxSpecified()) { @@ -1919,6 +1914,26 @@ boolean isPreviewable(String command) } } +boolean toggleShowConsole() { + if (console == null) { + savedOut = System.out; + console = cp5.addConsole(consoleArea); + consoleArea.setVisible(true); + console.play(); + } + else { + console.pause(); + consoleArea.setVisible(false); + cp5.remove(console); + console = null; + System.setOut(savedOut); + } + + println("Ow"); + + return console == null; +} + /** This will comb the command queue and attempt to draw a picture of what it contains. Coordinates here are in pixels. @@ -3252,16 +3267,6 @@ Integer getBaudRate() return baudRate; } -boolean isUseWindowedConsole() -{ - return this.useWindowedConsole; -} - -void setUseWindowedConsole(boolean use) -{ - this.useWindowedConsole = use; -} - void initLogging() { try From dba8bb5b2a06efa59893c5c231e849aae81d08e6 Mon Sep 17 00:00:00 2001 From: Sandy Noble Date: Sun, 17 Jan 2016 22:37:24 +0000 Subject: [PATCH 3/4] Added the posterization feature into the density preview --- DisplayMachine.pde | 19 ++++++++++++------- DrawPixelsWindow.pde | 2 +- controlsActions.pde | 7 +++++++ controlsSetup.pde | 13 +++++++++++++ drawing.pde | 14 +++++++------- polargraphcontroller.pde | 14 +++++++++++--- 6 files changed, 51 insertions(+), 18 deletions(-) diff --git a/DisplayMachine.pde b/DisplayMachine.pde index a0d9582..2b77d16 100644 --- a/DisplayMachine.pde +++ b/DisplayMachine.pde @@ -535,7 +535,7 @@ class DisplayMachine extends Machine p = scaleToScreen(p); stroke(strokeColour); vertex(p.x, p.y); - //ellipse(p.x, p.y, 3, 3); +// ellipse(p.x, p.y, 3, 3); } else { @@ -719,7 +719,12 @@ class DisplayMachine extends Machine // scale em, danno. PVector scaledPos = scaleToScreen(cartesianPos); noStroke(); - fill(cartesianPos.z); + + // Posterize the density value + int reduced = int(map(cartesianPos.z, 1, 255, 1, densityPreviewPosterize)+0.5); + int brightness = int(map(reduced, 1, densityPreviewPosterize, 1, 255)); + + fill(brightness); switch (getDensityPreviewStyle()) { case DENSITY_PREVIEW_ROUND: @@ -727,20 +732,20 @@ class DisplayMachine extends Machine break; case DENSITY_PREVIEW_ROUND_SIZE: fill(0); - previewRoundPixel(scaledPos, map(cartesianPos.z, 1, 255, pixelSize, 1)); + previewRoundPixel(scaledPos, map(brightness, 1, densityPreviewPosterize, pixelSize, 1)); break; case DENSITY_PREVIEW_DIAMOND: - previewDiamondPixel(scaledPos, pixelSize, pixelSize, cartesianPos.z); + previewDiamondPixel(scaledPos, pixelSize, pixelSize, brightness); break; case DENSITY_PREVIEW_NATIVE: - previewNativePixel(scaledPos, pixelSize, cartesianPos.z); + previewNativePixel(scaledPos, pixelSize, brightness); break; case DENSITY_PREVIEW_NATIVE_SIZE: - previewNativePixel(scaledPos, map(cartesianPos.z, 1, 255, pixelSize, 1), 50); + previewNativePixel(scaledPos, map(brightness, 1, densityPreviewPosterize, pixelSize, 1), 50); break; case DENSITY_PREVIEW_NATIVE_ARC: previewRoundPixel(scaledPos, pixelSize*0.8); - previewNativeArcPixel(scaledPos, pixelSize, cartesianPos.z); + previewNativeArcPixel(scaledPos, pixelSize, brightness); break; default: previewRoundPixel(scaledPos, pixelSize); diff --git a/DrawPixelsWindow.pde b/DrawPixelsWindow.pde index 0b96807..dd7ce6c 100644 --- a/DrawPixelsWindow.pde +++ b/DrawPixelsWindow.pde @@ -21,7 +21,7 @@ ControlFrameSimple addDrawPixelsControlFrame(String theName, int theWidth, int t p.dispose(); f.dispose(); } - } + } ); f.setResizable( true ); f.setVisible( true ); diff --git a/controlsActions.pde b/controlsActions.pde index 87a241a..de5911a 100644 --- a/controlsActions.pde +++ b/controlsActions.pde @@ -738,4 +738,11 @@ void button_mode_cycleDensityPreviewStyle() } } +void numberbox_mode_changeDensityPreviewPosterize(int value) { + if (value < 1) value = 1; + else if (value > 255) value = 255; + + densityPreviewPosterize = value; +} + diff --git a/controlsSetup.pde b/controlsSetup.pde index d59d62a..dfd9462 100644 --- a/controlsSetup.pde +++ b/controlsSetup.pde @@ -521,6 +521,14 @@ Map initialiseNumberboxValues(Map map) { n.setValue(densityPreviewStyle); } + else if (MODE_CHANGE_DENSITY_PREVIEW_POSTERIZE.equals(key)) + { + n.setValue(densityPreviewPosterize); + n.setMin(1); + n.setMax(255); + n.setDecimalPrecision(1); + n.setMultiplier(0.1); + } } } return map; @@ -694,6 +702,7 @@ List getControlNamesForInputPanel() controlNames.add(MODE_CHANGE_SAMPLE_AREA); controlNames.add(MODE_CHOOSE_CHROMA_KEY_COLOUR); controlNames.add(MODE_CHANGE_PIXEL_SCALING); + controlNames.add(MODE_CHANGE_DENSITY_PREVIEW_POSTERIZE); controlNames.add(MODE_CYCLE_DENSITY_PREVIEW_STYLE); controlNames.add(MODE_RENDER_PIXEL_DIALOG); @@ -984,6 +993,8 @@ Map buildControlLabels() result.put(MODE_ADJUST_PREVIEW_CORD_OFFSET, "Cord offset"); result.put(MODE_CYCLE_DENSITY_PREVIEW_STYLE, "Cycle preview style"); + + result.put(MODE_CHANGE_DENSITY_PREVIEW_POSTERIZE, "Pixel posterize"); @@ -1132,6 +1143,8 @@ Set buildControlNames() result.add(MODE_ADJUST_PREVIEW_CORD_OFFSET); result.add(MODE_CYCLE_DENSITY_PREVIEW_STYLE); + result.add(MODE_CHANGE_DENSITY_PREVIEW_POSTERIZE); + return result; } diff --git a/drawing.pde b/drawing.pde index e7ce185..817d184 100644 --- a/drawing.pde +++ b/drawing.pde @@ -199,13 +199,13 @@ void sendTestPenWidth() StringBuilder sb = new StringBuilder(); sb.append(testPenWidthCommand) .append(int(gridSize)) - .append(",") - .append(df.format(testPenWidthStartSize)) - .append(",") - .append(df.format(testPenWidthEndSize)) - .append(",") - .append(df.format(testPenWidthIncrementSize)) - .append(",END"); + .append(",") + .append(df.format(testPenWidthStartSize)) + .append(",") + .append(df.format(testPenWidthEndSize)) + .append(",") + .append(df.format(testPenWidthIncrementSize)) + .append(",END"); addToCommandQueue(sb.toString()); } diff --git a/polargraphcontroller.pde b/polargraphcontroller.pde index 5de4188..dbf604e 100644 --- a/polargraphcontroller.pde +++ b/polargraphcontroller.pde @@ -57,7 +57,7 @@ import java.awt.BorderLayout; import java.lang.reflect.Method; int majorVersionNo = 2; -int minorVersionNo = 1; +int minorVersionNo = 2; int buildNo = 1; String programTitle = "Polargraph Controller v" + majorVersionNo + "." + minorVersionNo + " build " + buildNo; @@ -342,6 +342,8 @@ static final String MODE_ADJUST_PREVIEW_CORD_OFFSET = "numberbox_mode_previewCor static final String MODE_CYCLE_DENSITY_PREVIEW_STYLE = "button_mode_cycleDensityPreviewStyle"; +static final String MODE_CHANGE_DENSITY_PREVIEW_POSTERIZE = "numberbox_mode_changeDensityPreviewPosterize"; + PVector statusTextPosition = new PVector(300.0, 12.0); @@ -387,6 +389,7 @@ static final int DENSITY_PREVIEW_NATIVE_SIZE = 5; static final int DEFAULT_DENSITY_PREVIEW_STYLE = DENSITY_PREVIEW_NATIVE; int densityPreviewStyle = DEFAULT_DENSITY_PREVIEW_STYLE; +int densityPreviewPosterize = 255; static final byte COORD_MODE_NATIVE_STEPS = 0; static final byte COORD_MODE_NATIVE_MM = 1; @@ -537,7 +540,8 @@ void setup() parentPapplet = this; RG.init(this); - RG.setPolygonizer(RG.ADAPTATIVE); + RG.setPolygonizer(RG.UNIFORMLENGTH); +// RG.setPolygonizer(RG.ADAPTATIVE); try { @@ -600,6 +604,7 @@ void setup() addEventListeners(); frameRate(8); + noLoop(); } void fitDisplayMachineToWindow() { @@ -679,6 +684,7 @@ void windowResized() } void draw() { + if (getCurrentTab() == TAB_NAME_INPUT) { drawImagePage(); } @@ -1949,6 +1955,8 @@ void previewQueue(boolean forceRebuild) { println("regenerating preview queue."); previewCommandList.clear(); + + for (String command : commandQueue) { if (command.startsWith(CMD_CHANGELENGTHDIRECT) || command.startsWith(CMD_CHANGELENGTH) || command.startsWith(CMD_DRAWPIXEL)) @@ -1962,8 +1970,8 @@ void previewQueue(boolean forceRebuild) String bLenStr = splitted[2]; PVector endPoint = new PVector(Integer.parseInt(aLenStr)+previewCordOffset, Integer.parseInt(bLenStr)+previewCordOffset); - endPoint = getDisplayMachine().asCartesianCoords(endPoint); endPoint = getDisplayMachine().inMM(endPoint); + endPoint = getDisplayMachine().asCartesianCoords(endPoint); pv.x = endPoint.x; pv.y = endPoint.y; From 81b45259e3ed05d141481e66b43ffab919abd69d Mon Sep 17 00:00:00 2001 From: Sandy Noble Date: Sun, 24 Jan 2016 16:40:22 +0000 Subject: [PATCH 4/4] v2.2.2 better startup options --- Machine.pde | 2 +- polargraphcontroller.pde | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Machine.pde b/Machine.pde index 9737ae1..f5d6c37 100644 --- a/Machine.pde +++ b/Machine.pde @@ -39,7 +39,7 @@ class Machine protected Rectangle imageFrame = new Rectangle(1500,1500,1000,1000); protected Rectangle pictureFrame = new Rectangle(1600,1600,800,800); - protected Float stepsPerRev = 800.0; + protected Float stepsPerRev = 200.0; protected Float mmPerRev = 95.0; protected Float mmPerStep = null; diff --git a/polargraphcontroller.pde b/polargraphcontroller.pde index dbf604e..09beb7e 100644 --- a/polargraphcontroller.pde +++ b/polargraphcontroller.pde @@ -58,7 +58,7 @@ import java.lang.reflect.Method; int majorVersionNo = 2; int minorVersionNo = 2; -int buildNo = 1; +int buildNo = 2; String programTitle = "Polargraph Controller v" + majorVersionNo + "." + minorVersionNo + " build " + buildNo; ControlP5 cp5; @@ -2564,7 +2564,7 @@ public PVector getHomePoint() public DisplayMachine getDisplayMachine() { if (displayMachine == null) - displayMachine = new DisplayMachine(new Machine(5000, 5000, 800.0, 95.0), machinePosition, machineScaling); + displayMachine = new DisplayMachine(new Machine(5000, 5000, 200.0, 95.0), machinePosition, machineScaling); displayMachine.setOffset(machinePosition); displayMachine.setScale(machineScaling);