sorting out multi-display, fullScreen(), param passing with surface...

This commit is contained in:
Ben Fry
2015-06-05 21:24:28 -04:00
parent f62bbdfb0c
commit eda15abce9
16 changed files with 214 additions and 150 deletions
+2 -1
View File
@@ -185,7 +185,8 @@ run.options.bits.macosx = 32
# Index of the display to use for running sketches (starts at 1).
# Kept this 1-indexed because older vesions of Processing were setting
# the preference even before it was being used.
run.display = 0
# -1 means the default display, 0 means all displays
run.display = -1
# set internally
#run.window.bgcolor=
+127 -79
View File
@@ -105,7 +105,6 @@ public class PApplet implements PConstants {
//{
/**
* Full name of the Java version (i.e. 1.5.0_11).
* Prior to 0125, this was only the first three digits.
*/
public static final String javaVersionName =
System.getProperty("java.version");
@@ -690,11 +689,11 @@ public class PApplet implements PConstants {
static public final String ARGS_DISPLAY = "--display";
static public final String ARGS_BGCOLOR = "--bgcolor";
static public final String ARGS_SPAN_DISPLAYS = "--span";
static public final String ARGS_FULL_SCREEN = "--full-screen";
static public final String ARGS_WINDOW_COLOR = "--window-color";
static public final String ARGS_SPAN_SCREENS = "--span";
static public final String ARGS_PRESENT = "--present";
static public final String ARGS_STOP_COLOR = "--stop-color";
@@ -810,13 +809,20 @@ public class PApplet implements PConstants {
boolean insideSettings;
String renderer = JAVA2D;
int quality = 2;
// int quality = 2;
int smooth = 1;
boolean fullScreen;
boolean spanDisplays;
int displayIndex;
// boolean spanDisplays;
int display; // set to SPAN when using all displays
String outputPath;
OutputStream outputStream;
// Background default needs to be different from the default value in
// PGraphics.backgroundColor, otherwise size(100, 100) bg spills over.
// https://github.com/processing/processing/issues/2297
int windowColor = 0xffDDDDDD;
boolean insideSettings(Object... args) {
if (insideSettings) {
@@ -839,42 +845,48 @@ public class PApplet implements PConstants {
insideSettings = true;
// Workaround for https://github.com/processing/processing/issues/3295
// until we resolved https://github.com/processing/processing/issues/3296
// until we resolve https://github.com/processing/processing/issues/3296
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = ge.getDefaultScreenDevice();
GraphicsDevice[] devices = ge.getScreenDevices();
// default or unparsed will be -1
if (displayIndex >= 0 && displayIndex < devices.length) {
device = devices[displayIndex];
// Default or unparsed will be -1, spanning will be 0, actual displays will
// be numbered from 1 because it's too weird to say "display 0" in prefs.
if (display > 0 && display <= devices.length) {
device = devices[display-1];
}
DisplayMode displayMode = device.getDisplayMode();
displayWidth = displayMode.getWidth();
displayHeight = displayMode.getHeight();
// Here's where size(), fullScreen(), smooth(N) and noSmooth() might
// be called, conjuring up the demons of various rendering configurations.
settings();
insideSettings = false;
}
/** Override this method to call size() when not using the PDE. */
public void settings() {
size(DEFAULT_WIDTH, DEFAULT_HEIGHT, JAVA2D);
// is this necessary? (doesn't appear to be, so removing)
//size(DEFAULT_WIDTH, DEFAULT_HEIGHT, JAVA2D);
}
public int sketchWidth() {
final public int sketchWidth() {
//return DEFAULT_WIDTH;
return width;
}
public int sketchHeight() {
final public int sketchHeight() {
//return DEFAULT_HEIGHT;
return height;
}
public String sketchRenderer() {
final public String sketchRenderer() {
//return JAVA2D;
return renderer;
}
@@ -887,46 +899,55 @@ public class PApplet implements PConstants {
// smoothing at any given time. It's also a bit like getFill() would return
// true/false for whether fill was enabled, getFillColor() would return the
// color itself. Or at least that's what I can recall at the moment. [fry]
public int sketchQuality() {
//return 2;
return quality;
// public int sketchQuality() {
// //return 2;
// return quality;
// }
// smoothing 1 is default.. 0 is none.. 2,4,8 depend on renderer
final public int sketchSmooth() {
return smooth;
}
public boolean sketchFullScreen() {
final public boolean sketchFullScreen() {
//return false;
return fullScreen;
}
// Could be named 'screen' instead of display since it's the people using
// full screen who will be looking for it. On the other hand, screenX/Y/Z
// makes things confusing, and if 'displayIndex' exists...
public boolean sketchSpanDisplays() {
//return false;
return spanDisplays;
// // Could be named 'screen' instead of display since it's the people using
// // full screen who will be looking for it. On the other hand, screenX/Y/Z
// // makes things confusing, and if 'displayIndex' exists...
// public boolean sketchSpanDisplays() {
// //return false;
// return spanDisplays;
// }
// Using num instead of index since the latter usually refers 0-indexed lists
// SPAN is used when using all displays
final public int sketchDisplay() {
return display;
}
// Or should this be sketchDisplayNum instead of sketchDisplayIndex?
// (Index seems weird, but we don't use 'num' anywhere.)
public int sketchDisplayIndex() {
return displayIndex;
}
public String sketchOutputPath() {
final public String sketchOutputPath() {
//return null;
return outputPath;
}
public OutputStream sketchOutputStream() {
final public OutputStream sketchOutputStream() {
//return null;
return outputStream;
}
final public int sketchWindowColor() {
return windowColor;
}
// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
@@ -935,6 +956,7 @@ public class PApplet implements PConstants {
}
// TODO should this join the sketchXxxx() functions specific to settings()?
public void orientation(int which) {
// ignore calls to the orientation command
}
@@ -1485,6 +1507,16 @@ public class PApplet implements PConstants {
*/
public void fullScreen(String renderer) {
}
public void fullScreen(String renderer, int display) {
}
/**
* ( begin auto-generated from size.xml )
*
@@ -9447,38 +9479,46 @@ public class PApplet implements PConstants {
* <PRE>
* Parameters useful for launching or also used by the PDE:
*
* --location=x,y upper-lefthand corner of where the applet
* should appear on screen. if not used,
* the default is to center on the main screen.
* --location=x,y Upper-lefthand corner of where the applet
* should appear on screen. If not used,
* the default is to center on the main screen.
*
* --full-screen put the applet into full screen "present" mode.
* --present Presentation mode: blanks the entire screen and
* shows the sketch by itself. If the sketch is
* smaller than the screen, the background around it
* will use the --window-color setting.
*
* --hide-stop use to hide the stop button in situations where
* you don't want to allow users to exit. also
* see the FAQ on information for capturing the ESC
* key when running in presentation mode.
* --hide-stop Use to hide the stop button in situations where
* you don't want to allow users to exit. also
* see the FAQ on information for capturing the ESC
* key when running in presentation mode.
*
* --stop-color=#xxxxxx color of the 'stop' text used to quit an
* sketch when it's in present mode.
* --stop-color=#xxxxxx Color of the 'stop' text used to quit an
* sketch when it's in present mode.
*
* --bgcolor=#xxxxxx background color of the window.
* --window-color=#xxxxxx Background color of the window. The color used
* around the sketch when it's smaller than the
* minimum window size for the OS, and the matte
* color when using 'present' mode.
*
* --sketch-path location of where to save files from functions
* like saveStrings() or saveFrame(). defaults to
* the folder that the java application was
* launched from, which means if this isn't set by
* the pde, everything goes into the same folder
* as processing.exe.
* --sketch-path location of where to save files from functions
* like saveStrings() or saveFrame(). defaults to
* the folder that the java application was
* launched from, which means if this isn't set by
* the pde, everything goes into the same folder
* as processing.exe.
*
* --display=n set what display should be used by this sketch.
* displays are numbered starting from 0.
* --display=n set what display should be used by this sketch.
* displays are numbered starting from 1.
*
* --span Makes the sketch full screen across all displays.
*
* Parameters used by Processing when running via the PDE
*
* --external set when the applet is being used by the PDE
* --external set when the applet is being used by the PDE
*
* --editor-location=x,y position of the upper-lefthand corner of the
* editor window, for placement of applet window
* --editor-location=x,y position of the upper-lefthand corner of the
* editor window, for placement of applet window
*
* All parameters *after* the sketch class name are passed to the sketch
* itself and available from its 'args' array while the sketch is running.
@@ -9555,13 +9595,13 @@ public class PApplet implements PConstants {
int[] editorLocation = null;
String name = null;
int backgroundColor = 0;
//int stopColor = java.awt.Color.GRAY.getRGB();
int windowColor = 0;
int stopColor = 0xff808080;
boolean hideStop = false;
int displayIndex = -1; // -1 means use default, b/c numbered from 0
boolean fullScreen = false;
int displayIndex = -1; // use default
// boolean fullScreen = false;
boolean present = false;
boolean spanDisplays = false;
String param = null, value = null;
@@ -9584,12 +9624,12 @@ public class PApplet implements PConstants {
System.err.println("Could not parse " + value + " for " + ARGS_DISPLAY);
}
} else if (param.equals(ARGS_BGCOLOR)) {
} else if (param.equals(ARGS_WINDOW_COLOR)) {
if (value.charAt(0) == '#' && value.length() == 7) {
value = value.substring(1);
backgroundColor = 0xff000000 | Integer.parseInt(value, 16);
windowColor = 0xff000000 | Integer.parseInt(value, 16);
} else {
System.err.println(ARGS_BGCOLOR + " should be a # followed by six digits");
System.err.println(ARGS_WINDOW_COLOR + " should be a # followed by six digits");
}
} else if (param.equals(ARGS_STOP_COLOR)) {
@@ -9608,10 +9648,10 @@ public class PApplet implements PConstants {
}
} else {
if (args[argIndex].equals(ARGS_FULL_SCREEN)) {
fullScreen = true;
if (args[argIndex].equals(ARGS_PRESENT)) {
present = true;
} else if (args[argIndex].equals(ARGS_SPAN_SCREENS)) {
} else if (args[argIndex].equals(ARGS_SPAN_DISPLAYS)) {
spanDisplays = true;
} else if (args[argIndex].equals(ARGS_HIDE_STOP)) {
@@ -9673,15 +9713,19 @@ public class PApplet implements PConstants {
// A handful of things that need to be set before init/start.
sketch.sketchPath = folder;
sketch.spanDisplays = spanDisplays;
// sketch.spanDisplays = spanDisplays;
// If spanning screens, that means we're also full screen.
fullScreen |= spanDisplays;
// fullScreen |= spanDisplays;
if (spanDisplays) {
displayIndex = SPAN;
// fullScreen = true;
}
// If the applet doesn't call for full screen, but the command line does,
// enable it. Conversely, if the command line does not, don't disable it.
// Query the applet to see if it wants to be full screen all the time.
//fullScreen |= sketch.sketchFullScreen();
sketch.fullScreen |= fullScreen;
// // If the applet doesn't call for full screen, but the command line does,
// // enable it. Conversely, if the command line does not, don't disable it.
// // Query the applet to see if it wants to be full screen all the time.
// //fullScreen |= sketch.sketchFullScreen();
// sketch.fullScreen |= fullScreen;
// Don't set 'args' to a zero-length array if it should be null [3.0a8]
if (args.length != argIndex + 1) {
@@ -9692,8 +9736,12 @@ public class PApplet implements PConstants {
sketch.external = external;
PSurface surface =
sketch.initSurface(backgroundColor, displayIndex, fullScreen, spanDisplays);
if (windowColor != 0) {
sketch.windowColor = windowColor;
}
PSurface surface = sketch.initSurface();
// sketch.initSurface(windowColor, displayIndex, fullScreen, spanDisplays);
// Wait until the applet has figured out its width. In a static mode app,
// everything happens inside setup(), so this will be after setup() has
@@ -9708,7 +9756,7 @@ public class PApplet implements PConstants {
}
}
if (fullScreen) {
if (present) {
if (hideStop) {
stopColor = 0; // they'll get the hint
}
@@ -9723,8 +9771,8 @@ public class PApplet implements PConstants {
}
protected PSurface initSurface(int backgroundColor, int displayIndex,
boolean fullScreen, boolean spanDisplays) {
protected PSurface initSurface() {/*int backgroundColor, int displayNum,
boolean fullScreen, boolean spanDisplays) {*/
g = createPrimaryGraphics();
surface = g.createSurface();
@@ -9755,7 +9803,7 @@ public class PApplet implements PConstants {
}
};
surface.initFrame(this, backgroundColor, displayIndex, fullScreen, spanDisplays);
surface.initFrame(this); //, backgroundColor, displayNum, fullScreen, spanDisplays);
surface.setTitle(getClass().getName());
} else {
+2
View File
@@ -472,6 +472,8 @@ public interface PConstants {
/** Screen orientation constant for landscape (the hot dog way). */
static final int LANDSCAPE = 2;
/** Use with fullScreen() to indicate all available displays. */
static final int SPAN = 0;
// cursor types
+4 -1
View File
@@ -163,6 +163,9 @@ public class PGraphics extends PImage implements PConstants {
/// the anti-aliasing level for renderers that support it
public int quality;
// public int smooth;
// ........................................................
/// true if defaults() has been called a first time
@@ -701,7 +704,7 @@ public class PGraphics extends PImage implements PConstants {
this.parent = parent;
// Some renderers (OpenGL) need to know what smoothing level will be used
// before the rendering surface is even created.
quality = parent.sketchQuality();
quality = parent.sketchSmooth();
}
+3 -8
View File
@@ -34,12 +34,6 @@ public interface PSurface {
static public final int MIN_WINDOW_WIDTH = 128;
static public final int MIN_WINDOW_HEIGHT = 128;
// Background default needs to be different from the default value in
// PGraphics.backgroundColor, otherwise size(100, 100) bg spills over.
// https://github.com/processing/processing/issues/2297
//static final Color WINDOW_BGCOLOR = new Color(0xDD, 0xDD, 0xDD);
static final int WINDOW_BGCOLOR = 0xffDDDDDD;
// renderer that doesn't draw to the screen
public void initOffscreen(PApplet sketch);
@@ -48,8 +42,9 @@ public interface PSurface {
//public Component initComponent(PApplet sketch);
//public Frame initFrame(PApplet sketch, Color backgroundColor,
public void initFrame(PApplet sketch, int backgroundColor,
int deviceIndex, boolean fullScreen, boolean spanDisplays);
// public void initFrame(PApplet sketch, int backgroundColor,
// int deviceIndex, boolean fullScreen, boolean spanDisplays);
public void initFrame(PApplet sketch);
//
+15 -12
View File
@@ -390,20 +390,21 @@ public class PSurfaceAWT extends PSurfaceNone {
@Override
public void initFrame(PApplet sketch, int backgroundColor,
int deviceIndex, boolean fullScreen, boolean spanDisplays) {
public void initFrame(PApplet sketch) {/*, int backgroundColor,
int deviceIndex, boolean fullScreen, boolean spanDisplays) {*/
this.sketch = sketch;
GraphicsEnvironment environment =
GraphicsEnvironment.getLocalGraphicsEnvironment();
if (deviceIndex >= 0) { // if -1, use the default device
int displayNum = sketch.sketchDisplay();
if (displayNum > 0) { // if -1, use the default device
GraphicsDevice[] devices = environment.getScreenDevices();
if (deviceIndex < devices.length) {
displayDevice = devices[deviceIndex];
if (displayNum <= devices.length) {
displayDevice = devices[displayNum - 1];
} else {
System.err.format("Display %d does not exist, " +
"using the default display instead.", deviceIndex);
"using the default display instead.", displayNum);
for (int i = 0; i < devices.length; i++) {
System.err.format("Display %d is %s\n", i, devices[i]);
}
@@ -416,6 +417,7 @@ public class PSurfaceAWT extends PSurfaceNone {
// Need to save the window bounds at full screen,
// because pack() will cause the bounds to go to zero.
// http://dev.processing.org/bugs/show_bug.cgi?id=923
boolean spanDisplays = sketch.sketchDisplay() == PConstants.SPAN;
screenRect = spanDisplays ? getDisplaySpan() :
displayDevice.getDefaultConfiguration().getBounds();
// DisplayMode doesn't work here, because we can't get the upper-left
@@ -429,6 +431,7 @@ public class PSurfaceAWT extends PSurfaceNone {
sketchWidth = sketch.sketchWidth();
sketchHeight = sketch.sketchHeight();
boolean fullScreen = sketch.sketchFullScreen();
// Sketch has already requested to be the same as the screen's
// width and height, so let's roll with full screen mode.
if (screenRect.width == sketchWidth &&
@@ -451,12 +454,12 @@ public class PSurfaceAWT extends PSurfaceNone {
// ((JFrame) frame).getContentPane().setBackground(WINDOW_BGCOLOR);
// // Cannot call setResizable(false) until later due to OS X (issue #467)
// Removed code above, also removed from what's now in the placeXxxx()
// methods. Not sure why it was being double-set; hopefully anachronistic.
if (backgroundColor == 0) {
backgroundColor = WINDOW_BGCOLOR;
}
frame.getContentPane().setBackground(new Color(backgroundColor, false));
// // Removed code above, also removed from what's now in the placeXxxx()
// // methods. Not sure why it was being double-set; hopefully anachronistic.
// if (backgroundColor == 0) {
// backgroundColor = WINDOW_BGCOLOR;
// }
frame.getContentPane().setBackground(new Color(sketch.sketchWindowColor(), false));
// Put the p5 logo in the Frame's corner to override the Java coffee cup.
setIconImage(frame);
+2 -2
View File
@@ -193,9 +193,9 @@ public class PSurfaceFX implements PSurface {
//public Frame initFrame(PApplet sketch, java.awt.Color backgroundColor,
public void initFrame(PApplet sketch, int backgroundColor,
public void initFrame(PApplet sketch) {/*, int backgroundColor,
int deviceIndex, boolean fullScreen,
boolean spanDisplays) {
boolean spanDisplays) {*/
this.sketch = sketch;
PApplicationFX.surface = this;
//Frame frame = new DummyFrame();
+2 -2
View File
@@ -58,9 +58,9 @@ public class PSurfaceNone implements PSurface {
@Override
public void initFrame(PApplet sketch, int backgroundColor,
public void initFrame(PApplet sketch) {/*, int backgroundColor,
int deviceIndex, boolean fullScreen,
boolean spanDisplays) {
boolean spanDisplays) {*/
//this.sketch = sketch;
throw new IllegalStateException("initFrame() not available with " +
getClass().getSimpleName());
+2 -4
View File
@@ -35,7 +35,6 @@ import java.util.Arrays;
import processing.core.PApplet;
import processing.core.PGraphics;
import processing.core.PSurface;
/**
@@ -589,16 +588,15 @@ public abstract class PGL {
IntBuffer labelTex;
protected void endDraw(boolean clear0) {
protected void endDraw(boolean clear0, int windowColor) {
if (fboLayerInUse) {
syncBackTexture();
// Draw the contents of the back texture to the screen framebuffer.
bindFramebufferImpl(FRAMEBUFFER, 0);
if (presentMode) {
int argb = PSurface.WINDOW_BGCOLOR;
int argb = windowColor;
float a = ((argb >> 24) & 0xff) / 255.0f;
float r = ((argb >> 16) & 0xff) / 255.0f;
float g = ((argb >> 8) & 0xff) / 255.0f;
@@ -6524,7 +6524,7 @@ public class PGraphicsOpenGL extends PGraphics {
protected void endOnscreenDraw() {
pgl.endDraw(clearColorBuffer0);
pgl.endDraw(clearColorBuffer0, parent.sketchWindowColor());
}
+17 -11
View File
@@ -8,6 +8,7 @@ import java.awt.Point;
//import java.awt.Frame;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.List;
import com.jogamp.common.util.IOUtil.ClassResources;
import com.jogamp.nativewindow.NativeSurface;
@@ -88,9 +89,9 @@ public class PSurfaceJOGL implements PSurface {
}
public void initFrame(PApplet sketch, int backgroundColor,
public void initFrame(PApplet sketch) {/*, int backgroundColor,
int deviceIndex, boolean fullScreen,
boolean spanDisplays) {
boolean spanDisplays) {*/
this.sketch = sketch;
setIconImages();
@@ -100,7 +101,7 @@ public class PSurfaceJOGL implements PSurface {
Screen screen = NewtFactory.createScreen(display, 0);
screen.addReference();
ArrayList<MonitorDevice> monitors = new ArrayList<MonitorDevice>();
List<MonitorDevice> monitors = new ArrayList<MonitorDevice>();
GraphicsEnvironment environment =
GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] devices = environment.getScreenDevices();
@@ -142,14 +143,15 @@ public class PSurfaceJOGL implements PSurface {
// System.out.println("*******************************");
if (deviceIndex >= 0) { // if -1, use the default device
if (deviceIndex < monitors.size()) {
displayDevice = monitors.get(deviceIndex);
int displayNum = sketch.sketchDisplay();
if (displayNum > 0) { // if -1, use the default device
if (displayNum <= monitors.size()) {
displayDevice = monitors.get(displayNum - 1);
} else {
System.err.format("Display %d does not exist, " +
"using the default display instead.", deviceIndex);
"using the default display instead.", displayNum);
for (int i = 0; i < monitors.size(); i++) {
System.err.format("Display %d is %s\n", i, monitors.get(i));
System.err.format("Display %d is %s\n", i+1, monitors.get(i));
}
}
}
@@ -230,13 +232,17 @@ public class PSurfaceJOGL implements PSurface {
// int screenWidth = screen.getWidth();
// int screenHeight = screen.getHeight();
screenRect = spanDisplays ? new Rectangle(0, 0, screen.getWidth(), screen.getHeight()) :
new Rectangle(0, 0, displayDevice.getViewportInWindowUnits().getWidth(),
displayDevice.getViewportInWindowUnits().getHeight());
boolean spanDisplays = sketch.sketchDisplay() == PConstants.SPAN;
screenRect = spanDisplays ?
new Rectangle(0, 0, screen.getWidth(), screen.getHeight()) :
new Rectangle(0, 0,
displayDevice.getViewportInWindowUnits().getWidth(),
displayDevice.getViewportInWindowUnits().getHeight());
sketch.displayWidth = screenRect.width;
sketch.displayHeight = screenRect.height;
boolean fullScreen = sketch.sketchFullScreen();
// Sketch has already requested to be the same as the screen's
// width and height, so let's roll with full screen mode.
if (screenRect.width == sketchWidth &&
+24 -19
View File
@@ -1,6 +1,13 @@
0237 (3.0a10)
X retain original java.awt.Frame when it's in use
X set frame icon images for Java2D (dock and cmd-tab)
X size() inside setup() can only have numbers
X size() inside settings() is left alone and can do whatever it wants
X comments are being removed before size() is getting checked
X probably remove anything inside settings() as well?
o add imageSmooth()?
o https://github.com/processing/processing/issues/1272
X decided no, again
fixed earlier/can no longer reproduce
X strips when rendering spheres with lights and anti-aliasing
@@ -28,21 +35,30 @@ X set icon for OpenGL windows
X https://github.com/processing/processing/issues/3348
X key problem with DELETE, BACKSPACE and CMD in P3D / P2D
X https://github.com/processing/processing/issues/3352
_ save() and saveFrame() with OPENGL renderer fails
_ https://github.com/processing/processing/issues/3334
X save() and saveFrame() with OPENGL renderer fails
X https://github.com/processing/processing/issues/3334
beta
_ size() inside setup() can only have numbers
_ size() inside settings() is left alone and can do whatever it wants
_ comments are being removed before size() is getting checked
_ probably remove anything inside settings() as well?
_ fullScreen() method
_ take display into account for fullScreen()
X sketchXxxx() methods are final, need to move folks away from these
_ fix up handling of fullScreen()
_ https://github.com/processing/processing/issues/3296
_ right now using a (display ignoring) hack to displayWidth/Height
X maybe we use the AWT screen sizes first, then match the others w/ em?
_ https://docs.oracle.com/javafx/2/api/javafx/stage/Screen.html
X --full-screen replaced with --present (to untangle things)
_ if you want full screen, use the fullScreen() method
X instead of all these sketchXxxx() methods, should we have sketchSetting()
_ and an internal dictionary that stores them all?
_ intParam(), stringParam() and setParam()?
o or sketchInt() or settingsInt()?
o too much soup inside main() to handle arg parsing and passing to the sketch
X moved things to settings()
_ noSmooth()
_ can only be called inside setup(), show warning elsewhere
_ is lifted out of setup() and into settings()
_ goes before the first beginDraw() with createGraphics()
_ sketchQuality() needs to be rooted out
_ sort out display stuff (bug in the numbering in 3.0a9)
_ Text looks blurry in GL Retina (andres)
_ https://github.com/processing/processing/issues/2739
@@ -73,15 +89,6 @@ _ sketch window briefly appears on top left corner when using OpenGL
_ https://github.com/processing/processing/issues/3308
_ looks like we're off by 1 on monitor numbering
_ https://github.com/processing/processing/issues/3309
_ need a better option for using full screen
_ https://github.com/processing/processing/issues/3296
_ right now using a (display ignoring) hack to displayWidth/Height
_ maybe we use the AWT screen sizes first, then match the others w/ em?
_ https://docs.oracle.com/javafx/2/api/javafx/stage/Screen.html
_ instead of all these sketchXxxx() methods, should we have sketchSetting()
_ and an internal dictionary that stores them all?
_ or sketchInt() or settingsInt()?
_ too much soup inside main() to handle arg parsing and passing to the sketch
_ update documentation to say "don't override sketchXxxx() methods"
_ sketch window is not placed at correct location when running a second time
_ https://github.com/processing/processing/issues/3125
@@ -146,8 +153,6 @@ _ when did setPath() sneak into PShape? API is nothing like anything else
_ probably from the material stuff, but we need to fix that
_ ortho function is broken
_ https://github.com/processing/processing/issues/1278
_ add imageSmooth()?
_ https://github.com/processing/processing/issues/1272
full screen
+1 -1
View File
@@ -249,7 +249,7 @@ public class JavaBuild {
// in the preprocessor. Those are used in preproc.write() so that they
// can be used to add methods (settings() or sketchXxxx())
//String[] sizeParts =
SizeInfo sizeInfo =
SurfaceInfo sizeInfo =
preprocessor.initSketchSize(sketch.getMainProgram(), sizeWarning);
if (sizeInfo == null) {
// An error occurred while trying to pull out the size, so exit here
@@ -151,7 +151,7 @@ public class PdePreprocessor {
protected Mode mode;
Set<String> foundMethods;
SizeInfo sizeInfo;
SurfaceInfo sizeInfo;
/**
@@ -201,7 +201,7 @@ public class PdePreprocessor {
}
public SizeInfo initSketchSize(String code,
public SurfaceInfo initSketchSize(String code,
boolean sizeWarning) throws SketchException {
sizeInfo = parseSketchSize(code, sizeWarning);
return sizeInfo;
@@ -252,7 +252,7 @@ public class PdePreprocessor {
* @param fussy true if it should show an error message if bad size()
* @return null if there was an error, otherwise an array (might contain some/all nulls)
*/
static public SizeInfo parseSketchSize(String code,
static public SurfaceInfo parseSketchSize(String code,
boolean fussy) throws SketchException {
// This matches against any uses of the size() function, whether numbers
// or variables or whatever. This way, no warning is shown if size() isn't
@@ -312,7 +312,7 @@ public class PdePreprocessor {
//String[] matches = split on commas, but not commas inside quotes
StringList args = breakCommas(contents[1]);
SizeInfo info = new SizeInfo();
SurfaceInfo info = new SurfaceInfo();
info.statement = contents[0];
info.width = args.get(0).trim();
info.height = args.get(1).trim();
@@ -347,7 +347,7 @@ public class PdePreprocessor {
// if no size() found, check for fullScreen()
contents = PApplet.match(searchArea, FULL_SCREEN_CONTENTS_REGEX);
if (contents != null) {
SizeInfo info = new SizeInfo();
SurfaceInfo info = new SurfaceInfo();
info.statement = contents[0];
StringList args = breakCommas(contents[1]);
info.renderer = args.get(0).trim();
@@ -360,7 +360,7 @@ public class PdePreprocessor {
// not an error, just no size() specified
//return new String[] { null, null, null, null, null };
return new SizeInfo();
return new SurfaceInfo();
}
@@ -1001,7 +1001,7 @@ public class PdePreprocessor {
out.print("\"" + PApplet.ARGS_FULL_SCREEN + "\", ");
String farbe = Preferences.get("run.present.bgcolor");
out.print("\"" + PApplet.ARGS_BGCOLOR + "=" + farbe + "\", ");
out.print("\"" + PApplet.ARGS_WINDOW_COLOR + "=" + farbe + "\", ");
if (Preferences.getBoolean("export.application.stop")) {
farbe = Preferences.get("run.present.stop.color");
@@ -27,13 +27,16 @@ import processing.app.Base;
import processing.core.PApplet;
public class SizeInfo {
public class SurfaceInfo {
String statement;
String width;
String height;
String renderer;
String path;
String display;
/** null for nothing in setup(), 0 for noSmooth(), N for smooth(N) */
Integer quality;
boolean hasOldSyntax() {
@@ -385,7 +385,7 @@ public class Runner implements MessageConsumer {
// }
params.add(PApplet.ARGS_STOP_COLOR + "=" +
Preferences.get("run.present.stop.color"));
params.add(PApplet.ARGS_BGCOLOR + "=" +
params.add(PApplet.ARGS_WINDOW_COLOR + "=" +
Preferences.get("run.present.bgcolor"));
}