geomerative 0.1.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/LICENSE +662 -0
  4. data/LICENSE.md +9 -0
  5. data/README.md +2 -0
  6. data/Rakefile +37 -0
  7. data/examples/README.md +7 -0
  8. data/examples/data/FreeSans.ttf +0 -0
  9. data/examples/data/ReplicaBold.ttf +0 -0
  10. data/examples/data/bot1.svg +160 -0
  11. data/examples/hello_svg_to_pdf.rb +26 -0
  12. data/examples/hello_world.rb +23 -0
  13. data/examples/physics_type.rb +77 -0
  14. data/examples/rotate_first_letter.rb +28 -0
  15. data/geomerative.gemspec +32 -0
  16. data/lib/geomerative.rb +12 -0
  17. data/lib/geomerative/version.rb +3 -0
  18. data/pom.xml +110 -0
  19. data/src/geomerative/FastRClip.java +2715 -0
  20. data/src/geomerative/RClip.java +2892 -0
  21. data/src/geomerative/RClosest.java +64 -0
  22. data/src/geomerative/RCommand.java +1941 -0
  23. data/src/geomerative/RContour.java +348 -0
  24. data/src/geomerative/RFont.java +583 -0
  25. data/src/geomerative/RG.java +753 -0
  26. data/src/geomerative/RGeomElem.java +1075 -0
  27. data/src/geomerative/RGroup.java +888 -0
  28. data/src/geomerative/RMatrix.java +401 -0
  29. data/src/geomerative/RMesh.java +420 -0
  30. data/src/geomerative/RPath.java +1095 -0
  31. data/src/geomerative/RPoint.java +419 -0
  32. data/src/geomerative/RPolygon.java +1110 -0
  33. data/src/geomerative/RRectangle.java +91 -0
  34. data/src/geomerative/RSVG.java +976 -0
  35. data/src/geomerative/RShape.java +2045 -0
  36. data/src/geomerative/RStrip.java +221 -0
  37. data/src/geomerative/RStyle.java +469 -0
  38. data/src/org/apache/batik/svggen/font/.SVGFont.java.swp +0 -0
  39. data/src/org/apache/batik/svggen/font/Font.java +188 -0
  40. data/src/org/apache/batik/svggen/font/Glyph.java +113 -0
  41. data/src/org/apache/batik/svggen/font/Messages.java.bak +72 -0
  42. data/src/org/apache/batik/svggen/font/Point.java +38 -0
  43. data/src/org/apache/batik/svggen/font/RandomAccessFileEmulator.java +15 -0
  44. data/src/org/apache/batik/svggen/font/table/ClassDef.java +42 -0
  45. data/src/org/apache/batik/svggen/font/table/ClassDefFormat1.java +55 -0
  46. data/src/org/apache/batik/svggen/font/table/ClassDefFormat2.java +49 -0
  47. data/src/org/apache/batik/svggen/font/table/CmapFormat.java +81 -0
  48. data/src/org/apache/batik/svggen/font/table/CmapFormat0.java +60 -0
  49. data/src/org/apache/batik/svggen/font/table/CmapFormat2.java +48 -0
  50. data/src/org/apache/batik/svggen/font/table/CmapFormat4.java +147 -0
  51. data/src/org/apache/batik/svggen/font/table/CmapFormat6.java +60 -0
  52. data/src/org/apache/batik/svggen/font/table/CmapIndexEntry.java +84 -0
  53. data/src/org/apache/batik/svggen/font/table/CmapTable.java +87 -0
  54. data/src/org/apache/batik/svggen/font/table/Coverage.java +50 -0
  55. data/src/org/apache/batik/svggen/font/table/CoverageFormat1.java +59 -0
  56. data/src/org/apache/batik/svggen/font/table/CoverageFormat2.java +56 -0
  57. data/src/org/apache/batik/svggen/font/table/CvtTable.java +48 -0
  58. data/src/org/apache/batik/svggen/font/table/Device.java +63 -0
  59. data/src/org/apache/batik/svggen/font/table/DirectoryEntry.java +73 -0
  60. data/src/org/apache/batik/svggen/font/table/Feature.java +56 -0
  61. data/src/org/apache/batik/svggen/font/table/FeatureList.java +70 -0
  62. data/src/org/apache/batik/svggen/font/table/FeatureRecord.java +52 -0
  63. data/src/org/apache/batik/svggen/font/table/FeatureTags.java +30 -0
  64. data/src/org/apache/batik/svggen/font/table/FpgmTable.java +38 -0
  65. data/src/org/apache/batik/svggen/font/table/GlyfCompositeComp.java +165 -0
  66. data/src/org/apache/batik/svggen/font/table/GlyfCompositeDescript.java +160 -0
  67. data/src/org/apache/batik/svggen/font/table/GlyfDescript.java +79 -0
  68. data/src/org/apache/batik/svggen/font/table/GlyfSimpleDescript.java +155 -0
  69. data/src/org/apache/batik/svggen/font/table/GlyfTable.java +111 -0
  70. data/src/org/apache/batik/svggen/font/table/GlyphDescription.java +39 -0
  71. data/src/org/apache/batik/svggen/font/table/GposTable.java +80 -0
  72. data/src/org/apache/batik/svggen/font/table/GsubTable.java +118 -0
  73. data/src/org/apache/batik/svggen/font/table/HeadTable.java +159 -0
  74. data/src/org/apache/batik/svggen/font/table/HheaTable.java +109 -0
  75. data/src/org/apache/batik/svggen/font/table/HmtxTable.java +99 -0
  76. data/src/org/apache/batik/svggen/font/table/KernSubtable.java +58 -0
  77. data/src/org/apache/batik/svggen/font/table/KernSubtableFormat0.java +65 -0
  78. data/src/org/apache/batik/svggen/font/table/KernSubtableFormat2.java +56 -0
  79. data/src/org/apache/batik/svggen/font/table/KernTable.java +64 -0
  80. data/src/org/apache/batik/svggen/font/table/KerningPair.java +53 -0
  81. data/src/org/apache/batik/svggen/font/table/LangSys.java +58 -0
  82. data/src/org/apache/batik/svggen/font/table/LangSysRecord.java +52 -0
  83. data/src/org/apache/batik/svggen/font/table/Ligature.java +57 -0
  84. data/src/org/apache/batik/svggen/font/table/LigatureSet.java +55 -0
  85. data/src/org/apache/batik/svggen/font/table/LigatureSubst.java +40 -0
  86. data/src/org/apache/batik/svggen/font/table/LigatureSubstFormat1.java +63 -0
  87. data/src/org/apache/batik/svggen/font/table/LocaTable.java +72 -0
  88. data/src/org/apache/batik/svggen/font/table/Lookup.java +77 -0
  89. data/src/org/apache/batik/svggen/font/table/LookupList.java +68 -0
  90. data/src/org/apache/batik/svggen/font/table/LookupSubtable.java +27 -0
  91. data/src/org/apache/batik/svggen/font/table/LookupSubtableFactory.java +31 -0
  92. data/src/org/apache/batik/svggen/font/table/MaxpTable.java +124 -0
  93. data/src/org/apache/batik/svggen/font/table/NameRecord.java +98 -0
  94. data/src/org/apache/batik/svggen/font/table/NameTable.java +67 -0
  95. data/src/org/apache/batik/svggen/font/table/Os2Table.java +232 -0
  96. data/src/org/apache/batik/svggen/font/table/Panose.java +108 -0
  97. data/src/org/apache/batik/svggen/font/table/PostTable.java +379 -0
  98. data/src/org/apache/batik/svggen/font/table/PrepTable.java +38 -0
  99. data/src/org/apache/batik/svggen/font/table/Program.java +49 -0
  100. data/src/org/apache/batik/svggen/font/table/RangeRecord.java +57 -0
  101. data/src/org/apache/batik/svggen/font/table/Script.java +72 -0
  102. data/src/org/apache/batik/svggen/font/table/ScriptList.java +78 -0
  103. data/src/org/apache/batik/svggen/font/table/ScriptRecord.java +52 -0
  104. data/src/org/apache/batik/svggen/font/table/ScriptTags.java +28 -0
  105. data/src/org/apache/batik/svggen/font/table/SingleSubst.java +47 -0
  106. data/src/org/apache/batik/svggen/font/table/SingleSubstFormat1.java +67 -0
  107. data/src/org/apache/batik/svggen/font/table/SingleSubstFormat2.java +67 -0
  108. data/src/org/apache/batik/svggen/font/table/Table.java +204 -0
  109. data/src/org/apache/batik/svggen/font/table/TableDirectory.java +94 -0
  110. data/src/org/apache/batik/svggen/font/table/TableFactory.java +121 -0
  111. metadata +206 -0
@@ -0,0 +1,188 @@
1
+ /*
2
+
3
+ Copyright 2001-2003 The Apache Software Foundation
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this file except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+
17
+ */
18
+ package org.apache.batik.svggen.font;
19
+
20
+ import java.io.IOException;
21
+
22
+ import org.apache.batik.svggen.font.table.CmapTable;
23
+ import org.apache.batik.svggen.font.table.GlyfTable;
24
+ import org.apache.batik.svggen.font.table.HeadTable;
25
+ import org.apache.batik.svggen.font.table.HheaTable;
26
+ import org.apache.batik.svggen.font.table.HmtxTable;
27
+ import org.apache.batik.svggen.font.table.LocaTable;
28
+ import org.apache.batik.svggen.font.table.MaxpTable;
29
+ import org.apache.batik.svggen.font.table.NameTable;
30
+ import org.apache.batik.svggen.font.table.Os2Table;
31
+ import org.apache.batik.svggen.font.table.PostTable;
32
+ import org.apache.batik.svggen.font.table.Table;
33
+ import org.apache.batik.svggen.font.table.TableDirectory;
34
+ import org.apache.batik.svggen.font.table.TableFactory;
35
+
36
+ /**
37
+ * The TrueType font.
38
+ * @version $Id: Font.java,v 1.6 2004/08/18 07:15:18 vhardy Exp $
39
+ * @author <a href="mailto:david@steadystate.co.uk">David Schweinsberg</a>
40
+ */
41
+ public class Font {
42
+
43
+ private byte[] bs;
44
+ // private Interpreter interp = null;
45
+ // private Parser parser = null;
46
+ private TableDirectory tableDirectory = null;
47
+ private Table[] tables;
48
+ private Os2Table os2;
49
+ private CmapTable cmap;
50
+ private GlyfTable glyf;
51
+ private HeadTable head;
52
+ private HheaTable hhea;
53
+ private HmtxTable hmtx;
54
+ private LocaTable loca;
55
+ private MaxpTable maxp;
56
+ private NameTable name;
57
+ private PostTable post;
58
+
59
+ /**
60
+ * Constructor
61
+ */
62
+ public Font() {
63
+ }
64
+
65
+ public Table getTable(int tableType) {
66
+ for (Table table : tables) {
67
+ if ((table != null) && (table.getType() == tableType)) {
68
+ return table;
69
+ }
70
+ }
71
+ return null;
72
+ }
73
+
74
+ public Os2Table getOS2Table() {
75
+ return os2;
76
+ }
77
+
78
+ public CmapTable getCmapTable() {
79
+ return cmap;
80
+ }
81
+
82
+ public HeadTable getHeadTable() {
83
+ return head;
84
+ }
85
+
86
+ public HheaTable getHheaTable() {
87
+ return hhea;
88
+ }
89
+
90
+ public HmtxTable getHmtxTable() {
91
+ return hmtx;
92
+ }
93
+
94
+ public LocaTable getLocaTable() {
95
+ return loca;
96
+ }
97
+
98
+ public MaxpTable getMaxpTable() {
99
+ return maxp;
100
+ }
101
+
102
+ public NameTable getNameTable() {
103
+ return name;
104
+ }
105
+
106
+ public PostTable getPostTable() {
107
+ return post;
108
+ }
109
+
110
+ public int getAscent() {
111
+ return hhea.getAscender();
112
+ }
113
+
114
+ public int getDescent() {
115
+ return hhea.getDescender();
116
+ }
117
+
118
+ public int getNumGlyphs() {
119
+ return maxp.getNumGlyphs();
120
+ }
121
+
122
+ public Glyph getGlyph(int i) {
123
+ return (glyf.getDescription(i) != null)
124
+ ? new Glyph(
125
+ glyf.getDescription(i),
126
+ hmtx.getLeftSideBearing(i),
127
+ hmtx.getAdvanceWidth(i))
128
+ : null;
129
+ }
130
+
131
+ public TableDirectory getTableDirectory() {
132
+ return tableDirectory;
133
+ }
134
+
135
+ /**
136
+ * @param fontInBytes
137
+ */
138
+ protected void read(byte[] fontInBytes) {
139
+ bs = fontInBytes;
140
+ try {
141
+ try (RandomAccessFileEmulator raf = new RandomAccessFileEmulator(bs, "r")) {
142
+ tableDirectory = new TableDirectory(raf);
143
+ tables = new Table[tableDirectory.getNumTables()];
144
+
145
+ // Load each of the tables
146
+ for (int i = 0; i < tableDirectory.getNumTables(); i++) {
147
+ tables[i] = TableFactory.create
148
+ (tableDirectory.getEntry(i), raf);
149
+ }
150
+ }
151
+
152
+ // Get references to commonly used tables
153
+ os2 = (Os2Table) getTable(Table.OS_2);
154
+ cmap = (CmapTable) getTable(Table.cmap);
155
+ glyf = (GlyfTable) getTable(Table.glyf);
156
+ head = (HeadTable) getTable(Table.head);
157
+ hhea = (HheaTable) getTable(Table.hhea);
158
+ hmtx = (HmtxTable) getTable(Table.hmtx);
159
+ loca = (LocaTable) getTable(Table.loca);
160
+ maxp = (MaxpTable) getTable(Table.maxp);
161
+ name = (NameTable) getTable(Table.name);
162
+ post = (PostTable) getTable(Table.post);
163
+
164
+ // Initialize the tables that require it
165
+ hmtx.init(hhea.getNumberOfHMetrics(),
166
+ maxp.getNumGlyphs() - hhea.getNumberOfHMetrics());
167
+ loca.init(maxp.getNumGlyphs(), head.getIndexToLocFormat() == 0);
168
+ glyf.init(maxp.getNumGlyphs(), loca);
169
+
170
+ } catch (IOException e) {
171
+ }
172
+ }
173
+
174
+ public static Font create() {
175
+ return new Font();
176
+ }
177
+
178
+ /**
179
+ * @param fontInBytes
180
+ * @return
181
+ */
182
+
183
+ public static Font create(byte[] fontInBytes) {
184
+ Font f = new Font();
185
+ f.read(fontInBytes);
186
+ return f;
187
+ }
188
+ }
@@ -0,0 +1,113 @@
1
+ /*
2
+
3
+ Copyright 2001,2003 The Apache Software Foundation
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this file except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+
17
+ */
18
+ package org.apache.batik.svggen.font;
19
+
20
+ import org.apache.batik.svggen.font.table.GlyfDescript;
21
+ import org.apache.batik.svggen.font.table.GlyphDescription;
22
+
23
+ /**
24
+ * An individual glyph within a font.
25
+ * @version $Id: Glyph.java,v 1.4 2004/08/18 07:15:18 vhardy Exp $
26
+ * @author <a href="mailto:david@steadystate.co.uk">David Schweinsberg</a>
27
+ */
28
+ public class Glyph {
29
+
30
+ protected short leftSideBearing;
31
+ protected int advanceWidth;
32
+ private Point[] points;
33
+
34
+ public Glyph(GlyphDescription gd, short lsb, int advance) {
35
+ leftSideBearing = lsb;
36
+ advanceWidth = advance;
37
+ describe(gd);
38
+ }
39
+
40
+ public int getAdvanceWidth() {
41
+ return advanceWidth;
42
+ }
43
+
44
+ public short getLeftSideBearing() {
45
+ return leftSideBearing;
46
+ }
47
+
48
+ public Point getPoint(int i) {
49
+ return points[i];
50
+ }
51
+
52
+ public int getPointCount() {
53
+ return points.length;
54
+ }
55
+
56
+ /**
57
+ * Resets the glyph to the TrueType table settings
58
+ */
59
+ public void reset() {
60
+ }
61
+
62
+ /**
63
+ * @param factor a float value
64
+ */
65
+ public void scale(float factor) {
66
+ if(points!=null){
67
+ for (Point point : points) {
68
+ point.x *= factor;
69
+ point.y *= -factor;
70
+ }
71
+ }
72
+ leftSideBearing = (short)((float)leftSideBearing * factor);
73
+ advanceWidth = (int)((float)advanceWidth * factor);
74
+ }
75
+
76
+ /**
77
+ * @param factor a 16.16 fixed value
78
+ */
79
+ /*
80
+ public void scale(int factor) {
81
+ for (int i = 0; i < points.length; i++) {
82
+ //points[i].x = ( points[i].x * factor ) >> 6;
83
+ //points[i].y = ( points[i].y * factor ) >> 6;
84
+ points[i].x = ((points[i].x<<10) * factor) >> 26;
85
+ points[i].y = ((points[i].y<<10) * factor) >> 26;
86
+ }
87
+ leftSideBearing = (short)(( leftSideBearing * factor) >> 6);
88
+ advanceWidth = (advanceWidth * factor) >> 6;
89
+ }
90
+ */
91
+ /**
92
+ * Set the points of a glyph from the GlyphDescription
93
+ */
94
+ private void describe(GlyphDescription gd) {
95
+ int endPtIndex = 0;
96
+ points = new Point[gd.getPointCount() + 2];
97
+ for (int i = 0; i < gd.getPointCount(); i++) {
98
+ boolean endPt = gd.getEndPtOfContours(endPtIndex) == i;
99
+ if (endPt) {
100
+ endPtIndex++;
101
+ }
102
+ points[i] = new Point(
103
+ gd.getXCoordinate(i),
104
+ gd.getYCoordinate(i),
105
+ (gd.getFlags(i) & GlyfDescript.onCurve) != 0,
106
+ endPt);
107
+ }
108
+
109
+ // Append the origin and advanceWidth points (n & n+1)
110
+ points[gd.getPointCount()] = new Point(0, 0, true, true);
111
+ points[gd.getPointCount()+1] = new Point(advanceWidth, 0, true, true);
112
+ }
113
+ }
@@ -0,0 +1,72 @@
1
+ /*
2
+
3
+ Copyright 2001,2003 The Apache Software Foundation
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this file except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+
17
+ */
18
+ package org.apache.batik.svggen.font;
19
+
20
+ import java.util.Locale;
21
+ import java.util.MissingResourceException;
22
+
23
+ import org.apache.batik.i18n.LocalizableSupport;
24
+
25
+ /**
26
+ * This class manages the message for the bridge module.
27
+ *
28
+ * @author <a href="mailto:vhardy@apache.org">Vincent Hardy</a>
29
+ * @version $Id: Messages.java,v 1.5 2004/08/18 07:15:18 vhardy Exp $
30
+ */
31
+ public class Messages {
32
+
33
+ /**
34
+ * This class does not need to be instantiated.
35
+ */
36
+ protected Messages() { }
37
+
38
+ /**
39
+ * The error messages bundle class name.
40
+ */
41
+ protected final static String RESOURCES =
42
+ "org.apache.batik.svggen.font.resources.Messages";
43
+
44
+ /**
45
+ * The localizable support for the error messages.
46
+ */
47
+ protected static LocalizableSupport localizableSupport =
48
+ new LocalizableSupport(RESOURCES, Messages.class.getClassLoader());
49
+
50
+ /**
51
+ * Implements {@link org.apache.batik.i18n.Localizable#setLocale(Locale)}.
52
+ */
53
+ public static void setLocale(Locale l) {
54
+ localizableSupport.setLocale(l);
55
+ }
56
+
57
+ /**
58
+ * Implements {@link org.apache.batik.i18n.Localizable#getLocale()}.
59
+ */
60
+ public static Locale getLocale() {
61
+ return localizableSupport.getLocale();
62
+ }
63
+
64
+ /**
65
+ * Implements {@link
66
+ * org.apache.batik.i18n.Localizable#formatMessage(String,Object[])}.
67
+ */
68
+ public static String formatMessage(String key, Object[] args)
69
+ throws MissingResourceException {
70
+ return localizableSupport.formatMessage(key, args);
71
+ }
72
+ }
@@ -0,0 +1,38 @@
1
+ /*
2
+
3
+ Copyright 2001 The Apache Software Foundation
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this file except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+
17
+ */
18
+ package org.apache.batik.svggen.font;
19
+
20
+ /**
21
+ * @version $Id: Point.java,v 1.3 2004/08/18 07:15:18 vhardy Exp $
22
+ * @author <a href="mailto:david@steadystate.co.uk">David Schweinsberg</a>
23
+ */
24
+ public class Point {
25
+
26
+ public int x = 0;
27
+ public int y = 0;
28
+ public boolean onCurve = true;
29
+ public boolean endOfContour = false;
30
+ public boolean touched = false;
31
+
32
+ public Point(int x, int y, boolean onCurve, boolean endOfContour) {
33
+ this.x = x;
34
+ this.y = y;
35
+ this.onCurve = onCurve;
36
+ this.endOfContour = endOfContour;
37
+ }
38
+ }
@@ -0,0 +1,15 @@
1
+ package org.apache.batik.svggen.font;
2
+
3
+ import java.io.*;
4
+
5
+ public class RandomAccessFileEmulator extends DataInputStream{
6
+
7
+ public RandomAccessFileEmulator(byte[] byteArray, String accesMode){
8
+ super(new ByteArrayInputStream(byteArray));
9
+ }
10
+
11
+ public void seek(long n) throws IOException{
12
+ reset();
13
+ skip(n);
14
+ }
15
+ }
@@ -0,0 +1,42 @@
1
+ /*
2
+
3
+ Copyright 2001 The Apache Software Foundation
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this file except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+
17
+ */
18
+ package org.apache.batik.svggen.font.table;
19
+
20
+ import java.io.IOException;
21
+ import org.apache.batik.svggen.font.*;
22
+
23
+ /**
24
+ *
25
+ * @author <a href="mailto:david@steadystate.co.uk">David Schweinsberg</a>
26
+ * @version $Id: ClassDef.java,v 1.3 2004/08/18 07:15:19 vhardy Exp $
27
+ */
28
+ public abstract class ClassDef {
29
+
30
+ public abstract int getFormat();
31
+
32
+ protected static ClassDef read(RandomAccessFileEmulator raf) throws IOException {
33
+ ClassDef c = null;
34
+ int format = raf.readUnsignedShort();
35
+ if (format == 1) {
36
+ c = new ClassDefFormat1(raf);
37
+ } else if (format == 2) {
38
+ c = new ClassDefFormat2(raf);
39
+ }
40
+ return c;
41
+ }
42
+ }