summaryrefslogtreecommitdiffstats
path: root/src/jogl
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2011-05-08 05:31:39 +0200
committerSven Gothel <[email protected]>2011-05-08 05:31:39 +0200
commiteefa76604706bcaa55a1a324cb4eef78dd7a030c (patch)
tree7ed2e3cf5818ac9b6b4f1013027fd1325231f3bd /src/jogl
parentd60bc9c4bc4a6f99bafa8c723b3d7f3bacc80950 (diff)
Graph/Font: use StringBuilder
Diffstat (limited to 'src/jogl')
-rw-r--r--src/jogl/classes/com/jogamp/graph/font/Font.java14
-rw-r--r--src/jogl/classes/jogamp/graph/font/typecast/TypecastFont.java20
-rw-r--r--src/jogl/classes/jogamp/graph/font/typecast/ot/OTFont.java14
-rw-r--r--src/jogl/classes/jogamp/graph/font/typecast/ot/table/NameRecord.java5
-rw-r--r--src/jogl/classes/jogamp/graph/font/typecast/ot/table/NameTable.java22
5 files changed, 54 insertions, 21 deletions
diff --git a/src/jogl/classes/com/jogamp/graph/font/Font.java b/src/jogl/classes/com/jogamp/graph/font/Font.java
index a942c7a58..6503f2779 100644
--- a/src/jogl/classes/com/jogamp/graph/font/Font.java
+++ b/src/jogl/classes/com/jogamp/graph/font/Font.java
@@ -82,7 +82,14 @@ public interface Font {
public String getName(int nameIndex);
- public StringBuffer getAllNames(StringBuffer buffer, String separator);
+ public StringBuilder getName(StringBuilder string, int nameIndex);
+
+ /** Shall return the family and subfamily name, separated a dash.
+ * <p>{@link #getName(StringBuilder, int)} w/ {@link #NAME_FAMILY} and {@link #NAME_SUBFAMILY}</p>
+ * <p>Example: "{@code Ubuntu-Regular}"</p> */
+ public StringBuilder getFullFamilyName(StringBuilder buffer);
+
+ public StringBuilder getAllNames(StringBuilder string, String separator);
public Metrics getMetrics();
public Glyph getGlyph(char symbol);
@@ -92,5 +99,8 @@ public interface Font {
public float getStringHeight(CharSequence string, float pixelSize);
public AABBox getStringBounds(CharSequence string, float pixelSize);
- public boolean isPrintableChar( char c );
+ public boolean isPrintableChar( char c );
+
+ /** Shall return {@link #getFullFamilyName()} */
+ public String toString();
} \ No newline at end of file
diff --git a/src/jogl/classes/jogamp/graph/font/typecast/TypecastFont.java b/src/jogl/classes/jogamp/graph/font/typecast/TypecastFont.java
index 2e5774622..b5ec011c9 100644
--- a/src/jogl/classes/jogamp/graph/font/typecast/TypecastFont.java
+++ b/src/jogl/classes/jogamp/graph/font/typecast/TypecastFont.java
@@ -39,6 +39,7 @@ import jogamp.graph.geom.plane.AffineTransform;
import jogamp.graph.geom.plane.Path2D;
import com.jogamp.common.util.IntObjectHashMap;
+import com.jogamp.graph.font.Font;
import com.jogamp.graph.font.FontFactory;
import com.jogamp.graph.geom.AABBox;
@@ -139,13 +140,21 @@ class TypecastFont implements FontInt {
}
char2Glyph = new IntObjectHashMap(cmapentries + cmapentries/4);
}
-
+
+ public StringBuilder getName(StringBuilder sb, int nameIndex) {
+ return font.getName(nameIndex, sb);
+ }
public String getName(int nameIndex) {
- return font.getName(nameIndex);
+ return getName(null, nameIndex).toString();
}
- public StringBuffer getAllNames(StringBuffer buffer, String separator) {
- return font.getAllNames(buffer, separator);
+ public StringBuilder getAllNames(StringBuilder sb, String separator) {
+ return font.getAllNames(sb, separator);
}
+ public StringBuilder getFullFamilyName(StringBuilder sb) {
+ sb = getName(sb, Font.NAME_FAMILY).append("-");
+ getName(sb, Font.NAME_SUBFAMILY);
+ return sb;
+ }
public Metrics getMetrics() {
if (metrics == null) {
@@ -274,4 +283,7 @@ class TypecastFont implements FontInt {
return FontFactory.isPrintableChar(c);
}
+ public String toString() {
+ return getFullFamilyName(null).toString();
+ }
}
diff --git a/src/jogl/classes/jogamp/graph/font/typecast/ot/OTFont.java b/src/jogl/classes/jogamp/graph/font/typecast/ot/OTFont.java
index 6e7e76bc7..8c14b7302 100644
--- a/src/jogl/classes/jogamp/graph/font/typecast/ot/OTFont.java
+++ b/src/jogl/classes/jogamp/graph/font/typecast/ot/OTFont.java
@@ -101,16 +101,20 @@ public class OTFont {
public OTFont(OTFontCollection fc) {
_fc = fc;
}
- public String getName(int nameIndex) {
- return _name.getRecordsRecordString(nameIndex);
+ public StringBuilder getName(int nameIndex, StringBuilder sb) {
+ if(null == sb) {
+ sb = new StringBuilder();
+ }
+ return _name.getRecordsRecordString(sb, nameIndex);
}
- public StringBuffer getAllNames(StringBuffer sb, String separator) {
+
+ public StringBuilder getAllNames(StringBuilder sb, String separator) {
if(null != _name) {
if(null == sb) {
- sb = new StringBuffer();
+ sb = new StringBuilder();
}
for(int i=0; i<_name.getNumberOfNameRecords(); i++) {
- sb.append(_name.getRecord(i).getRecordString()).append(separator);
+ _name.getRecord(i).getRecordString(sb).append(separator);
}
}
return sb;
diff --git a/src/jogl/classes/jogamp/graph/font/typecast/ot/table/NameRecord.java b/src/jogl/classes/jogamp/graph/font/typecast/ot/table/NameRecord.java
index 04168ff77..cd13e9b4a 100644
--- a/src/jogl/classes/jogamp/graph/font/typecast/ot/table/NameRecord.java
+++ b/src/jogl/classes/jogamp/graph/font/typecast/ot/table/NameRecord.java
@@ -92,8 +92,9 @@ public class NameRecord {
return _platformId;
}
- public String getRecordString() {
- return _record;
+ public StringBuilder getRecordString(StringBuilder sb) {
+ sb.append(_record);
+ return sb;
}
protected void loadString(DataInput di) throws IOException {
diff --git a/src/jogl/classes/jogamp/graph/font/typecast/ot/table/NameTable.java b/src/jogl/classes/jogamp/graph/font/typecast/ot/table/NameTable.java
index cfaa7a2bc..6daf2ad60 100644
--- a/src/jogl/classes/jogamp/graph/font/typecast/ot/table/NameTable.java
+++ b/src/jogl/classes/jogamp/graph/font/typecast/ot/table/NameTable.java
@@ -106,22 +106,28 @@ public class NameTable implements Table {
return null;
}
- public String getRecordsRecordString(int i) {
+ public StringBuilder getRecordsRecordString(StringBuilder sb, int i) {
if(_numberOfNameRecords > i) {
- return _records[i].getRecordString();
+ _records[i].getRecordString(sb);
+ } else {
+ sb.append(Table.notAvailable);
}
- return Table.notAvailable;
+ return sb;
}
- public String getRecordString(short nameId) {
-
+ public StringBuilder getNamedRecordString(StringBuilder sb, short nameId) {
// Search for the first instance of this name ID
- for (int i = 0; i < _numberOfNameRecords; i++) {
+ boolean done = false;
+ for (int i = 0; !done && i < _numberOfNameRecords; i++) {
if (_records[i].getNameId() == nameId) {
- return _records[i].getRecordString();
+ _records[i].getRecordString(sb);
+ done = true;
}
}
- return "";
+ if(!done) {
+ sb.append(Table.notAvailable);
+ }
+ return sb;
}
public int getType() {