Resolve PDF renderer parse issue in preproc. (#68)

Resolve PDF renderer parse issue in preproc.
This commit is contained in:
Ben Fry
2020-01-22 07:22:24 -05:00
committed by GitHub
4 changed files with 79 additions and 6 deletions
@@ -73,8 +73,9 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
private String sketchWidth;
private String sketchHeight;
private String sketchRenderer;
private String pixelDensity;
private String sketchRenderer = null;
private String sketchOutputFilename = null;
private boolean sizeRequiresRewrite = false;
private boolean pixelDensityRequiresRewrite = false;
@@ -627,10 +628,15 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
sketchRenderer.equals("P3D") ||
sketchRenderer.equals("OPENGL") ||
sketchRenderer.equals("JAVA2D") ||
sketchRenderer.equals("PDF") ||
sketchRenderer.equals("FX2D"))) {
thisRequiresRewrite = false;
}
}
if (argsContext.getChildCount() > 5) {
sketchOutputFilename = argsContext.getChild(6).getText();
}
}
if (isFullscreen) {
@@ -1021,12 +1027,12 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
String settingsOuterTemplate = indent1 + "public void settings() { %s }";
StringBuilder settingsInner = new StringBuilder();
StringJoiner settingsInner = new StringJoiner("\n");
if (sizeRequiresRewrite) {
if (sizeIsFullscreen) {
String fullscreenInner = sketchRenderer == null ? "" : sketchRenderer;
settingsInner.append(String.format("fullScreen(%s);", fullscreenInner));
settingsInner.add(String.format("fullScreen(%s);", fullscreenInner));
} else {
if (sketchWidth.isEmpty() || sketchHeight.isEmpty()) {
@@ -1041,13 +1047,16 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
argJoiner.add(sketchRenderer);
}
settingsInner.append(String.format("size(%s);", argJoiner.toString()));
if (sketchOutputFilename != null) {
argJoiner.add(sketchOutputFilename);
}
settingsInner.add(String.format("size(%s);", argJoiner.toString()));
}
}
if (pixelDensityRequiresRewrite) {
settingsInner.append("\n");
settingsInner.append(String.format("pixelDensity(%s);", pixelDensity));
settingsInner.add(String.format("pixelDensity(%s);", pixelDensity));
}
@@ -388,6 +388,11 @@ public class ParserTests {
expectGood("parampixeldensity");
}
@Test
public void testPdfWrite() {
expectGood("pdfwrite");
}
private static boolean compile(String id, String program) {
// Create compilable AST to get syntax problems
CompilationUnit compilableCU = JdtCompilerUtil.makeAST(
+45
View File
@@ -0,0 +1,45 @@
import processing.core.*;
import processing.data.*;
import processing.event.*;
import processing.opengl.*;
import processing.pdf.*;
import java.util.HashMap;
import java.util.ArrayList;
import java.io.File;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
public class pdfwrite extends PApplet {
public void setup() {
/* size commented out by preprocessor */;
}
public void draw() {
// Draw something good here
line(0, 0, width/2, height);
// Exit the program
println("Finished.");
exit();
}
public void settings() { size(400,400,PDF,"filename.pdf"); }
static public void main(String[] passedArgs) {
String[] appletArgs = new String[] { "pdfwrite" };
if (passedArgs != null) {
PApplet.main(concat(appletArgs, passedArgs));
} else {
PApplet.main(appletArgs);
}
}
}
+14
View File
@@ -0,0 +1,14 @@
import processing.pdf.*;
void setup() {
size(400, 400, PDF, "filename.pdf");
}
void draw() {
// Draw something good here
line(0, 0, width/2, height);
// Exit the program
println("Finished.");
exit();
}