From fc1432316af2ee490fb27e1eee7c317809d8839e Mon Sep 17 00:00:00 2001 From: benfry Date: Sat, 16 Apr 2005 01:34:10 +0000 Subject: [PATCH] a bunch of font work that prolly breaks things too... --- app/tools/CreateFont.java | 5 +- core/PApplet.java | 17 +++++ core/PFont.java | 93 ++++++++++++++++------- core/PGraphics.java | 137 +++++++++++++++++++++++++++++++++ core/PGraphics3.java | 33 ++++---- core/todo.txt | 154 ++++++++++++++++++++------------------ todo.txt | 27 +++++++ 7 files changed, 354 insertions(+), 112 deletions(-) diff --git a/app/tools/CreateFont.java b/app/tools/CreateFont.java index 01a8a2d2f..127934497 100644 --- a/app/tools/CreateFont.java +++ b/app/tools/CreateFont.java @@ -150,6 +150,9 @@ public class CreateFont extends JFrame { */ int index = 0; for (int i = 0; i < fonts.length; i++) { + String psname = fonts[i].getPSName(); + if (psname == null) System.err.println("ps name is null"); + flist[index++] = fonts[i].getPSName(); table.put(fonts[i].getPSName(), fonts[i]); } @@ -407,7 +410,7 @@ public class CreateFont extends JFrame { try { Font instance = (Font) table.get(list[selection]); font = instance.deriveFont(Font.PLAIN, fontsize); - PFont f = new PFont(font, all, smooth); + PFont f = new PFont(font, all ? null : PFont.DEFAULT_CHARSET, smooth); // make sure the 'data' folder exists if (!targetFolder.exists()) targetFolder.mkdirs(); diff --git a/core/PApplet.java b/core/PApplet.java index 56138d35c..6c55990bf 100644 --- a/core/PApplet.java +++ b/core/PApplet.java @@ -4026,6 +4026,11 @@ public class PApplet extends Applet return what & 0xff; } + /** + * Note that toInt('5') is unlike String in the sense that it + * won't return 5, but the ascii value. This is because ((int) someChar) + * returns the ascii value, and toInt() is just longhand for the cast. + */ static final public int toInt(char what) { return what; } @@ -5762,6 +5767,12 @@ v PApplet.this.stop(); } + public void ortho() { + if (recorder != null) recorder.ortho(); + g.ortho(); + } + + public void ortho(float left, float right, float bottom, float top, float near, float far) { @@ -5770,6 +5781,12 @@ v PApplet.this.stop(); } + public void perspective() { + if (recorder != null) recorder.perspective(); + g.perspective(); + } + + public void perspective(float fovy, float aspect, float zNear, float zFar) { if (recorder != null) recorder.perspective(fovy, aspect, zNear, zFar); g.perspective(fovy, aspect, zNear, zFar); diff --git a/core/PFont.java b/core/PFont.java index aa833aadb..ce825fffd 100644 --- a/core/PFont.java +++ b/core/PFont.java @@ -59,6 +59,17 @@ public class PFont implements PConstants { public int charCount; public PImage images[]; + /** + * Name of the font as seen by Java when it was created. + * If the font is available, the native version will be used. + */ + public String name; + + /** + * Postscript name of the font that this bitmap was created from. + */ + public String psname; + /** "natural" size of the font (most often 48) */ public int size; @@ -104,7 +115,10 @@ public class PFont implements PConstants { charCount = is.readInt(); // bit count is ignored since this is always 8 - int numBits = is.readInt(); + //int numBits = is.readInt(); + // used to be the bitCount, but now used for version number. + // version 8 is any font before 69, so 9 is anything from 83+ + int version = is.readInt(); // this was formerly ignored, now it's the actual font size //mbox = is.readInt(); @@ -199,6 +213,11 @@ public class PFont implements PConstants { } //System.out.println(); } + + if (version == 9) { // includes the font name at the end of the file + name = is.readUTF(); + psname = is.readUTF(); + } } @@ -210,7 +229,10 @@ public class PFont implements PConstants { DataOutputStream os = new DataOutputStream(output); os.writeInt(charCount); - os.writeInt(8); // numBits + + // formerly numBits, now used for version number + os.writeInt((name != null) ? 9 : 8); + os.writeInt(size); // formerly mboxX (was 64, now 48) os.writeInt(mbox2); // formerly mboxY (was 64, still 64) os.writeInt(ascent); // formerly baseHt (was ignored) @@ -233,8 +255,12 @@ public class PFont implements PConstants { } } } + + if (name != null) { // version 9 + os.writeUTF(name); + } + os.flush(); - //os.close(); // can/should i do this? } @@ -370,7 +396,8 @@ public class PFont implements PConstants { x -= parent.textSize * width(c); } - textImpl(c, x, y, z, parent); + //textImpl(c, x, y, z, parent); + parent.textImpl(c, x, y, z); } @@ -378,6 +405,7 @@ public class PFont implements PConstants { * Internal function to draw a character at an x, y, z position. * This version is called after the textM */ + /* protected void textImpl(char c, float x, float y, float z, PGraphics parent) { int glyph = index(c); @@ -475,6 +503,7 @@ public class PFont implements PConstants { } } } + */ public void text(String str, float x, float y, PGraphics parent) { @@ -516,7 +545,8 @@ public class PFont implements PConstants { } for (int index = start; index < stop; index++) { - textImpl(textBuffer[index], x, y, z, parent); + //textImpl(textBuffer[index], x, y, z, parent); + parent.textImpl(textBuffer[index], x, y, z); x += parent.textSize *width(textBuffer[index]); } } @@ -533,6 +563,7 @@ public class PFont implements PConstants { /** * Draw text in a box that is constrained to a particular size. + *

* The parent PApplet will have converted the coords based on * the current rectMode(). *

@@ -642,19 +673,6 @@ public class PFont implements PConstants { ////////////////////////////////////////////////////////////// - /** - * This is the union of the Mac Roman and Windows ANSI - * character sets. ISO Latin 1 would be Unicode characters - * 0x80 -> 0xFF, but in practice, it would seem that most - * designers using P5 would rather have the characters - * that they expect from their platform's fonts. - * - * This is more of an interim solution until a much better - * font solution can be determined. (i.e. create fonts on - * the fly from some sort of vector format). - * - * Not that I expect that to happen. - */ static final char[] EXTRA_CHARS = { 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, @@ -686,15 +704,31 @@ public class PFont implements PConstants { 0xFB01, 0xFB02 }; - static char[] charset; + + /** + * The default Processing character set. + *

+ * This is the union of the Mac Roman and Windows ANSI + * character sets. ISO Latin 1 would be Unicode characters + * 0x80 -> 0xFF, but in practice, it would seem that most + * designers using P5 would rather have the characters + * that they expect from their platform's fonts. + *

+ * This is more of an interim solution until a much better + * font solution can be determined. (i.e. create fonts on + * the fly from some sort of vector format). + *

+ * Not that I expect that to happen. + */ + static public char[] DEFAULT_CHARSET; static { - charset = new char[126-33+1 + EXTRA_CHARS.length]; + DEFAULT_CHARSET = new char[126-33+1 + EXTRA_CHARS.length]; int index = 0; for (int i = 33; i <= 126; i++) { - charset[index++] = (char)i; + DEFAULT_CHARSET[index++] = (char)i; } for (int i = 0; i < EXTRA_CHARS.length; i++) { - charset[index++] = EXTRA_CHARS[i]; + DEFAULT_CHARSET[index++] = EXTRA_CHARS[i]; } }; @@ -703,18 +737,22 @@ public class PFont implements PConstants { * Create a new .vlw font on the fly. See documentation with * the later version of this constructor. */ + /* public PFont(String name, int fontsize) { this(new Font(name, Font.PLAIN, fontsize), false, true); } + */ /** * Create a new .vlw font on the fly. See documentation with * the later version of this constructor. */ + /* public PFont(String name, int fontsize, boolean smooth) { this(new Font(name, Font.PLAIN, fontsize), false, smooth); } + */ /** @@ -725,14 +763,19 @@ public class PFont implements PConstants { * @param all true to include all available characters in the font * @param smooth true to enable smoothing/anti-aliasing */ - public PFont(Font font, boolean all, boolean smooth) { + public PFont(Font font, char charset[], boolean smooth) { if (PApplet.javaVersion < 1.3) { throw new RuntimeException("Can only create fonts with " + "Java 1.3 or higher"); } + name = font.getName(); + psname = font.getPSName(); + try { - this.charCount = all ? 65536 : charset.length; + // the count gets reset later based on how many of + // the chars are actually found inside the font. + this.charCount = (charset == null) ? 65536 : charset.length; this.size = font.getSize(); fwidth = fheight = size; @@ -847,7 +890,7 @@ public class PFont implements PConstants { int maxWidthHeight = 0; int index = 0; for (int i = 0; i < charCount; i++) { - char c = all ? (char)i : charset[i]; + char c = (charset == null) ? (char)i : charset[i]; //if (!font.canDisplay(c)) { // skip chars not in the font try { diff --git a/core/PGraphics.java b/core/PGraphics.java index e726d9c9f..f40958f83 100644 --- a/core/PGraphics.java +++ b/core/PGraphics.java @@ -1466,6 +1466,7 @@ public class PGraphics extends PImage implements PConstants { float x1, float y1, float x2, float y2, int u1, int v1, int u2, int v2) { // TODO blit an image to the screen + System.err.println("unimplemented imageImpl() in PGraphics"); } @@ -1743,6 +1744,134 @@ public class PGraphics extends PImage implements PConstants { } + //font.getStringBounds(text, g2.getFontRenderContext()).getWidth(); + + protected void textImpl(char ch, float x, float y, float z) { + int index = textFont.index(ch); + if (index == -1) return; + + PImage glyph = textFont.images[index]; + + if (textMode == OBJECT) { + float high = (float) textFont.height[index] / textFont.fheight; + float bwidth = (float) textFont.width[index] / textFont.fwidth; + float lextent = (float) textFont.leftExtent[index] / textFont.fwidth; + float textent = (float) textFont.topExtent[index] / textFont.fheight; + + float x1 = x + lextent * textSize; + float y1 = y - textent * textSize; + float x2 = x1 + bwidth * textSize; + float y2 = y1 + high * textSize; + + textImplObject(glyph, + x1, y1, z, x2, y2, z, + textFont.width[index], textFont.height[index]); + + } else if (textMode == SCREEN) { + int xx = (int) x + textFont.leftExtent[index];; + int yy = (int) y - textFont.topExtent[index]; + + int w0 = textFont.width[index]; + int h0 = textFont.height[index]; + + textImplScreen(glyph, xx, yy, w0, h0); + } + } + + + protected void textImplObject(PImage glyph, + float x1, float y1, float z1, + float x2, float y2, float z2, + int u2, int v2) { + boolean savedTint = tint; + int savedTintColor = tintColor; + float savedTintR = tintR; + float savedTintG = tintG; + float savedTintB = tintB; + float savedTintA = tintA; + boolean savedTintAlpha = tintAlpha; + + tint = true; + tintColor = fillColor; + tintR = fillR; + tintG = fillG; + tintB = fillB; + tintA = fillA; + tintAlpha = fillAlpha; + + imageImpl(glyph, x1, y1, x2, y2, 0, 0, u2, v2); + + tint = savedTint; + tintColor = savedTintColor; + tintR = savedTintR; + tintG = savedTintG; + tintB = savedTintB; + tintA = savedTintA; + tintAlpha = savedTintAlpha; + } + + + // should take image, int x1, int y1, and x2, y2 + + protected void textImplScreen(PImage glyph, + int xx, int yy, //int x2, int y2, + int w0, int h0) { + /* + System.out.println("textimplscreen"); + rectMode(CORNER); + stroke(255); + rect(xx, yy, w0, h0); + */ + + int x0 = 0; + int y0 = 0; + + if ((xx >= width) || (yy >= height) || + (xx + w0 < 0) || (yy + h0 < 0)) return; + + if (xx < 0) { + x0 -= xx; + w0 += xx; + xx = 0; + } + if (yy < 0) { + y0 -= yy; + h0 += yy; + yy = 0; + } + if (xx + w0 > width) { + w0 -= ((xx + w0) - width); + } + if (yy + h0 > height) { + h0 -= ((yy + h0) - height); + } + + int fr = fillRi; + int fg = fillGi; + int fb = fillBi; + int fa = fillAi; + + int pixels1[] = glyph.pixels; //images[glyph].pixels; + + // TODO this can be optimized a bit + for (int row = y0; row < y0 + h0; row++) { + for (int col = x0; col < x0 + w0; col++) { + int a1 = (fa * pixels1[row * textFont.twidth + col]) >> 8; + int a2 = a1 ^ 0xff; + //int p1 = pixels1[row * textFont.width[glyph] + col]; + int p1 = pixels1[row * glyph.width + col]; + int p2 = pixels[(yy + row-y0)*width + (xx+col-x0)]; + + pixels[(yy + row-y0)*width + xx+col-x0] = + (0xff000000 | + (((a1 * fr + a2 * ((p2 >> 16) & 0xff)) & 0xff00) << 8) | + (( a1 * fg + a2 * ((p2 >> 8) & 0xff)) & 0xff00) | + (( a1 * fb + a2 * ( p2 & 0xff)) >> 8)); + } + } + } + + ////////////////////////////////////////////////////////////// @@ -1931,12 +2060,20 @@ public class PGraphics extends PImage implements PConstants { depthError("endCamera"); } + public void ortho() { + depthError("ortho"); + } + public void ortho(float left, float right, float bottom, float top, float near, float far) { depthError("ortho"); } + public void perspective() { + depthError("perspective"); + } + public void perspective(float fovy, float aspect, float zNear, float zFar) { depthError("perspective"); } diff --git a/core/PGraphics3.java b/core/PGraphics3.java index f89599814..d81077a0f 100644 --- a/core/PGraphics3.java +++ b/core/PGraphics3.java @@ -2449,7 +2449,7 @@ public class PGraphics3 extends PGraphics { * Record the current settings into the camera matrix. * And set the matrix mode back to the current * transformation matrix. - * + *

* Note that this will destroy any settings to scale(), * translate() to your scene. */ @@ -2458,11 +2458,16 @@ public class PGraphics3 extends PGraphics { throw new RuntimeException("cannot call endCamera while not "+ "in camera manipulation mode"); } - else { - manipulatingCamera = false; - forwardTransform = modelview; - reverseTransform = modelviewInv; - } + // reset the modelview to use this new camera matrix + modelview.set(camera); + modelviewInv.set(cameraInv); + + // set matrix mode back to modelview + forwardTransform = modelview; + reverseTransform = modelviewInv; + + // all done + manipulatingCamera = false; } @@ -2740,11 +2745,11 @@ public class PGraphics3 extends PGraphics { /** * Takes an RGB or RGBA image and sets it as the background. - * + *

* Note that even if the image is set as RGB, the high 8 bits of * each pixel must be set (0xFF000000), because the image data will * be copied directly to the screen. - * + *

* Also clears out the zbuffer and stencil buffer if they exist. */ public void background(PImage image) { @@ -2758,11 +2763,9 @@ public class PGraphics3 extends PGraphics { /** - * Clears pixel buffer. Also clears the stencil and zbuffer - * if they exist. Their existence is more accurate than using 'depth' - * to test whether to clear them, because if they're non-null, - * it means that depth() has been called somewhere in the program, - * even if noDepth() was called before draw() exited. + * Clears pixel buffer. + *

+ * With P3D and OPENGL, this also clears the stencil and zbuffer. */ public void clear() { //System.out.println("PGraphics3.clear(" + @@ -2887,13 +2890,13 @@ public class PGraphics3 extends PGraphics { public void smooth() { - String msg = "smooth() not available when used with depth()"; + String msg = "smooth() not available with P3D"; throw new RuntimeException(msg); } public void noSmooth() { - String msg = "noSmooth() not available when used with depth()"; + String msg = "noSmooth() not available with P3D"; throw new RuntimeException(msg); } diff --git a/core/todo.txt b/core/todo.txt index acf0cb476..5d774de23 100644 --- a/core/todo.txt +++ b/core/todo.txt @@ -62,6 +62,63 @@ X i.e. mixed case filename in sketch is different in windows X but when uploaded to a unix server causes a serious problem X use canonicalPath to flag possible problems X http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1096508877;start=5 +o fix shapes in P3D (line loop, polygons, etc) +o should we include a from and to for the directional light? +X no, cuz it doesn't do much really.. +X fromX-toX etc is all that's different + +thursday day +X set modelview to camera on endCamera +X add ortho() and perspective() to PGraphics.java + +thursday evening +o textMode(ALIGN_LEFT) etc, should make sure that left/center/right not used +X though since have to change to LEFT, should be easy to switch + +friday night +o should toInt('5') return the ascii or the char? +X since (int) '5' returns the ascii, that's what it does +X made a note in the PApplet reference + +text api +X textMode ALIGN_CENTER _LEFT _RIGHT -> CENTER, LEFT, RIGHT ? +X use built-in font if available? yes +o text() with \n is semi-broken +X does the font or PApplet control the size? (the font, ala java) +X without setting the font, SCREEN_SPACE comes out weird +o move SCREEN_SPACE into ScreenFont() class? +o probably not, casey thinks screen space text is prolly more useful +o that way can clear up some of the general confusion in the code +X textFont with a named font can use the renderer/os font +X illustrator api can get the ps name from the java font name +X since it's associated with the font file.. wee! +X for postscript, can grab the real font +o altho problem here is that really the fonts just need a name +o since needs to render to screen as well +o font has to be installed to get psname +X fine because why would you embed a ps font that you don't have? +o need to resolve SCREEN_SPACE vs OBJECT_SPACE +o can this be auto-detected with noDepth()? +o how does rotated text work? +o PFont.rotate(180) rotate(PI) +o or can this be detected from the matrix? +o PFont.list() to return string list of all the available fonts +X probably not a mode of use that we really want to encourage +X don't use pixels to do screen space text inside PFont +X add a function in PGraphics for direct pixel image impl +X store the font name in the vlw font file (at the end) +o could include multiple names for multi platforms +X get text impl stuff working properly +o look into fixing the texture mapping to not squash fonts +o NEW_GRAPHICS totally smashes everything + +_ implement createFont() +_ with a .ttf does a create font internally (1.3+ only) +_ although the images aren't populated +_ until a P2D/P3D/OPENGL tries to draw them, which triggers it +_ but if PGraphics2, just uses the built-in font +_ also works for font names and just creating them +_ if font name doesn't end with otf or ttf, then tries to create it _ rename video.Camera to video.Video ? _ VideoInput VideoOutput, SoundInput, SoundOutput or AudioInput/AudioOutput @@ -70,12 +127,11 @@ _ yes, and add nf(int what) so that non-padded version works _ but don't put commas into the zero-padded version _ make nf/nfs/nfp not so weird _ nf(PLUS, ...) nf(PAD, ...) nfc(PLUS, ...) -_ should we include a from and to for the directional light? - -_ fix shapes in P3D (line loop, polygons, etc) _ fix the flicker in java2d mode X is it because the lock was taken off (g) in PApplet? +_ appears to be much worse (unfinished drawing) on macosx +_ try turning off hw accel on the mac to see if that's the problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @@ -83,6 +139,9 @@ X is it because the lock was taken off (g) in PApplet? NOT NECESSARY BEFORE BETA +_ post() method to send a bunch of crap to a web url? +_ or an example that does this? + _ bit shifting in opengl, get down to 2 ops by using other image modes _ i.e. ABGR_EXT might allow for just two shifts instead of 4 _ allow access to native pixel buffer in opengl and power of 2 @@ -231,38 +290,6 @@ public Object growArray(Object array, int size) { return grown; } -text api questions -_ text should maybe use built-in font if available? -_ don't use pixels to do screen space text inside PFont -_ add a function in PGraphics for direct pixel image impl -_ in java2d, can quickly blit the image itself -_ this way, can isolate it for gl too, which will use glBitmap -_ textFont with a named font can use the renderer/os font -_ PFont.list() to return string list of all the available fonts -_ for postscript, can grab the real font -_ -> altho problem here is that really the fonts just need a name -_ since needs to render to screen as well - -text api solutions -_ store the font name in the vlw font file (at the end) -o could include multiple names for multi platforms -_ danger of this setup is that it may run much nicer for the author -_ i.e. with the font installed, and then super slow for their users -_ is getFontList returning a different set of fonts from device2d? -_ or is it only those with ps names? -_ createFont() with a .ttf does a create font internally (1.3+ only) -_ although the images aren't populated -_ until a P2D/P3D/OPENGL tries to draw them, which triggers it -_ but if PGraphics2, just uses the built-in font -_ how does ftgl handle tesselation? will our tesselator just work? -_ main code is in FTVectoriser -_ uses gluTessBeginContour and gluTessEndContour -_ and then does 5 step sizes for each curveto -_ createFont() also works for font names and just creating them -_ if font name doesn't end with otf or ttf, then tries to create it -_ illustrator api can get the ps name from the java font name -_ since it's associated with the font file.. wee! - _ beginShape() _ don't allow you to draw stroked items unless stroke() is called _ don't allow beginShape() if shape is already set @@ -363,42 +390,10 @@ _ just have a "thin_flat_line" option in opengl code _ go through and figure out what stuff to make public -text issues -_ text() with \n is semi-broken -_ font encoding issues -_ java seems to force straight windows encoding.. (problem for pi fonts) -_ opentype/cff fonts don't work with live loading from the app -_ many (all?) opentype fonts won't show up or aren't supported -_ this may be only cff fonts that have trouble -_ when encoding with something besides the standard encoding, problematic -_ so sonata otf and sonata don't seem to have any chars at all -_ getAllFonts() not quite working for many fonts -_ i.e. Orator Std on windows.. macosx seems to be ok -_ is getFamilyNames() any different/better? -_ when did this break? 1.4.1? 1.4.x vs 1.3? -_ may be that cff fonts won't work? -_ textMode ALIGN_CENTER _LEFT _RIGHT -> CENTER, LEFT, RIGHT ? -_ need to resolve SCREEN_SPACE vs OBJECT_SPACE -_ can this be auto-detected with noDepth()? -_ how does rotated text work? -_ PFont.rotate(180) rotate(PI) -_ or can this be detected from the matrix? -_ does the font or PApplet control the size? (the font, ala java) -_ without setting the font, SCREEN_SPACE comes out weird -_ move SCREEN_SPACE into ScreenFont() class? -_ probably not, casey thinks screen space text is prolly more useful -_ that way can clear up some of the general confusion in the code -_ check into symbol font encoding with create font -_ create font with user-specified charsets - -text wish list -_ look into fixing the texture mapping to not squash fonts -_ NEW_GRAPHICS totally smashes everything -_ not having kerning really blows -_ could this be pulled from the OpenType font stuff? -_ it could be placed at the end of the file -_ simple way to just use java text in p5 applets? -_ the current text support is just so hokey +_ how does ftgl handle tesselation? will our tesselator just work? +_ main code is in FTVectoriser +_ uses gluTessBeginContour and gluTessEndContour +_ and then does 5 step sizes for each curveto _ illustrator export / rendering mode _ also postscript or pdf export? @@ -559,6 +554,23 @@ CORE / PGraphics 1 _ http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1076660476;start=0 +CORE / PFont + + 1 _ optimize textMode(OBJECT) with textMode(SCREEN) + 1 _ in PGraphics and PGraphics3, check to see if matrix is within epsilon + 1 _ of one of the rotation matrices (many fewer steps) + 1 _ if identity, or just translate, or a rotate, make OBJECT into SCREEN + 1 _ optimize fonts by using native fonts in PGraphics2 + 1 _ especially textMode(SCREEN) which is disastrously slow + 1 _ in java2d, can quickly blit the image itself + 1 _ this way, can isolate it for gl too, which will use glBitmap + 1 _ danger of this setup is that it may run much nicer for the author + 1 _ i.e. with the font installed, and then super slow for their users + ? _ not having kerning really blows + ? _ could this be pulled from the OpenType font stuff? + ? _ it could be placed at the end of the file + + CORE / PSound 1 _ make java 1.1 version of PSound work properly diff --git a/todo.txt b/todo.txt index aea81c206..3a93d89f2 100644 --- a/todo.txt +++ b/todo.txt @@ -9,8 +9,12 @@ X get latest sonia from amit X remove particles from current processing X move netscape library out of libs and into build/shared +_ add serial.stop() just like client/server + _ remove PdeXxx prefixes on names, make PdeBase into just "Processing" +_ fix macos readme about how to boost memory size, and 1.3 vs 1.4 + _ placement of 100x100 items is odd _ happens with P3D and maybe also P2D? @@ -21,6 +25,11 @@ _ update linux build and shell scripts for new package _ make a linux version _ need to fix up the make/dist scripts for linux +_ if in full java mode +_ if extends PApplet.. or rather, put PApplet cast into a +_ try/catch block.. if it doesn't work, try applet. if that +_ doesn't work, try using the class' main() to run it + fixed in 82 X border weirdness in PdeEditor panels on windows @@ -194,6 +203,7 @@ _ some type of sketch archive format for posting examples (.psk?) _ would be nice to open a sketch directly from a zip file camera +_ pause and framerate aren't working _ when passing in 'null' as the camera, dialog pops up fine _ but the applet craps out after a few seconds (pinwheel spin) _ list() should return full list with all sub-components @@ -517,6 +527,23 @@ PDE / Create Font 1 _ font builder chopping off parts of letters 1 _ this may be fixed? 1 _ http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1076358432;start=0 + 1 _ font encoding issues + 1 _ java seems to force straight windows encoding.. (problem for pi fonts) + 1 _ opentype/cff fonts don't work with live loading from the app + 1 _ many (all?) opentype fonts won't show up or aren't supported + 1 _ this may be only cff fonts that have trouble + 1 _ when encoding with something besides the standard encoding, problematic + 1 _ so sonata otf and sonata don't seem to have any chars at all + 1 _ available font issues + 1 _ is getFontList returning a different set of fonts from device2d? + 1 _ try it out on java 1.3 versus 1.4 + 1 _ getAllFonts() not quite working for many fonts + 1 _ i.e. Orator Std on windows.. macosx seems to be ok + 1 _ is getFamilyNames() any different/better? + 1 _ when did this break? 1.4.1? 1.4.x vs 1.3? + 1 _ may be that cff fonts won't work? + 1 _ or is it only those with ps names? + 1 _ create font with user-specified charsets PDE / Editor Status