mirror of
https://github.com/processing/processing4.git
synced 2026-06-16 04:26:26 +02:00
a bunch of font work that prolly breaks things too...
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
+68
-25
@@ -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.
|
||||
* <P>
|
||||
* The parent PApplet will have converted the coords based on
|
||||
* the current rectMode().
|
||||
* <P>
|
||||
@@ -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.
|
||||
* <P>
|
||||
* 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.
|
||||
* <P>
|
||||
* 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).
|
||||
* <P>
|
||||
* 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 {
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
+18
-15
@@ -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.
|
||||
*
|
||||
* <P>
|
||||
* 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.
|
||||
*
|
||||
* <P>
|
||||
* 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.
|
||||
*
|
||||
* <P>
|
||||
* 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.
|
||||
* <P>
|
||||
* 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);
|
||||
}
|
||||
|
||||
|
||||
+83
-71
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user