mirror of
https://github.com/processing/processing4.git
synced 2026-02-14 10:55:38 +01:00
Resolve PDF renderer parse issue in preproc.
Resolve moving the PDF renderer information provided in size into settings as part of preproc. Resolves #66.
This commit is contained in:
@@ -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
java/test/resources/pdfwrite.expected
Normal file
45
java/test/resources/pdfwrite.expected
Normal 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
java/test/resources/pdfwrite.pde
Normal file
14
java/test/resources/pdfwrite.pde
Normal 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();
|
||||
}
|
||||
Reference in New Issue
Block a user