geomerative 0.4.3-java → 2.1.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -0
  3. data/.mvn/extensions.xml +1 -1
  4. data/.mvn/wrapper/maven-wrapper.properties +1 -1
  5. data/CHANGELOG.md +19 -1
  6. data/COPYING.md +1 -1
  7. data/README.md +2 -2
  8. data/Rakefile +2 -15
  9. data/docs/_config.yml +8 -0
  10. data/docs/_includes/head.html +7 -6
  11. data/docs/_includes/header.html +6 -6
  12. data/docs/_includes/icon-github.svg +3 -1
  13. data/docs/_includes/icon-twitter.svg +3 -1
  14. data/docs/_includes/navigation.html +24 -0
  15. data/docs/_sass/_base.scss +79 -79
  16. data/docs/_sass/_layout.scss +137 -137
  17. data/docs/_sass/_syntax-highlighting.scss +64 -64
  18. data/docs/index.html +18 -18
  19. data/examples/README.md +1 -1
  20. data/examples/data/bot1.svg +1 -1
  21. data/examples/data/lion.svg +156 -156
  22. data/examples/data/ruby.svg +1 -1
  23. data/examples/jruby_merge.rb +1 -1
  24. data/examples/{f_agent.rb → library/f_agent/f_agent.rb} +0 -0
  25. data/examples/{font_agent.rb → library/font_agent/font_agent.rb} +2 -1
  26. data/examples/text_on_geomerative_path.rb +3 -2
  27. data/examples/typo_deform.rb +2 -2
  28. data/examples/typo_extra_bright.rb +1 -1
  29. data/geomerative.gemspec +3 -6
  30. data/lib/geomerative/version.rb +1 -1
  31. data/lib/geomerative.jar +0 -0
  32. data/lib/geomerative.rb +10 -10
  33. data/mvnw +234 -0
  34. data/mvnw.cmd +145 -0
  35. data/pom.rb +14 -16
  36. data/pom.xml +13 -19
  37. data/src/geomerative/FastRClip.java +2050 -2334
  38. data/src/geomerative/RClip.java +2237 -2539
  39. data/src/geomerative/RClosest.java +33 -31
  40. data/src/geomerative/RCommand.java +1750 -1758
  41. data/src/geomerative/RContour.java +290 -292
  42. data/src/geomerative/RFont.java +277 -246
  43. data/src/geomerative/RG.java +722 -727
  44. data/src/geomerative/RGeomElem.java +967 -962
  45. data/src/geomerative/RGroup.java +508 -467
  46. data/src/geomerative/RMatrix.java +304 -289
  47. data/src/geomerative/RMesh.java +241 -229
  48. data/src/geomerative/RPath.java +924 -926
  49. data/src/geomerative/RPoint.java +391 -391
  50. data/src/geomerative/RPolygon.java +1017 -1013
  51. data/src/geomerative/RRectangle.java +43 -52
  52. data/src/geomerative/RSVG.java +480 -516
  53. data/src/geomerative/RShape.java +1767 -1777
  54. data/src/geomerative/RStrip.java +173 -176
  55. data/src/geomerative/RStyle.java +197 -194
  56. data/src/module-info.java +4 -0
  57. data/src/org/apache/batik/svggen/font/Font.java +141 -142
  58. data/src/org/apache/batik/svggen/font/Glyph.java +102 -71
  59. data/src/org/apache/batik/svggen/font/Point.java +12 -12
  60. data/src/org/apache/batik/svggen/font/RandomAccessFileEmulator.java +14 -12
  61. data/src/org/apache/batik/svggen/font/table/ClassDef.java +12 -12
  62. data/src/org/apache/batik/svggen/font/table/ClassDefFormat1.java +27 -24
  63. data/src/org/apache/batik/svggen/font/table/ClassDefFormat2.java +20 -17
  64. data/src/org/apache/batik/svggen/font/table/CmapFormat.java +43 -43
  65. data/src/org/apache/batik/svggen/font/table/CmapFormat0.java +33 -26
  66. data/src/org/apache/batik/svggen/font/table/CmapFormat2.java +25 -20
  67. data/src/org/apache/batik/svggen/font/table/CmapFormat4.java +106 -96
  68. data/src/org/apache/batik/svggen/font/table/CmapFormat6.java +36 -32
  69. data/src/org/apache/batik/svggen/font/table/CmapIndexEntry.java +69 -49
  70. data/src/org/apache/batik/svggen/font/table/CmapTable.java +50 -50
  71. data/src/org/apache/batik/svggen/font/table/Coverage.java +19 -19
  72. data/src/org/apache/batik/svggen/font/table/CoverageFormat1.java +30 -27
  73. data/src/org/apache/batik/svggen/font/table/CoverageFormat2.java +26 -24
  74. data/src/org/apache/batik/svggen/font/table/CvtTable.java +16 -16
  75. data/src/org/apache/batik/svggen/font/table/Device.java +32 -32
  76. data/src/org/apache/batik/svggen/font/table/DirectoryEntry.java +39 -39
  77. data/src/org/apache/batik/svggen/font/table/Feature.java +26 -23
  78. data/src/org/apache/batik/svggen/font/table/FeatureList.java +37 -35
  79. data/src/org/apache/batik/svggen/font/table/FeatureRecord.java +22 -22
  80. data/src/org/apache/batik/svggen/font/table/FeatureTags.java +4 -3
  81. data/src/org/apache/batik/svggen/font/table/FpgmTable.java +9 -9
  82. data/src/org/apache/batik/svggen/font/table/GlyfCompositeComp.java +134 -132
  83. data/src/org/apache/batik/svggen/font/table/GlyfCompositeDescript.java +123 -122
  84. data/src/org/apache/batik/svggen/font/table/GlyfDescript.java +44 -44
  85. data/src/org/apache/batik/svggen/font/table/GlyfSimpleDescript.java +110 -109
  86. data/src/org/apache/batik/svggen/font/table/GlyfTable.java +46 -46
  87. data/src/org/apache/batik/svggen/font/table/GlyphDescription.java +25 -13
  88. data/src/org/apache/batik/svggen/font/table/GposTable.java +26 -23
  89. data/src/org/apache/batik/svggen/font/table/GsubTable.java +85 -82
  90. data/src/org/apache/batik/svggen/font/table/HeadTable.java +131 -131
  91. data/src/org/apache/batik/svggen/font/table/HheaTable.java +80 -80
  92. data/src/org/apache/batik/svggen/font/table/HmtxTable.java +50 -49
  93. data/src/org/apache/batik/svggen/font/table/KernSubtable.java +29 -27
  94. data/src/org/apache/batik/svggen/font/table/KernSubtableFormat0.java +35 -32
  95. data/src/org/apache/batik/svggen/font/table/KernSubtableFormat2.java +28 -26
  96. data/src/org/apache/batik/svggen/font/table/KernTable.java +36 -31
  97. data/src/org/apache/batik/svggen/font/table/KerningPair.java +27 -23
  98. data/src/org/apache/batik/svggen/font/table/LangSys.java +28 -26
  99. data/src/org/apache/batik/svggen/font/table/LangSysRecord.java +22 -22
  100. data/src/org/apache/batik/svggen/font/table/Ligature.java +24 -24
  101. data/src/org/apache/batik/svggen/font/table/LigatureSet.java +24 -24
  102. data/src/org/apache/batik/svggen/font/table/LigatureSubst.java +9 -9
  103. data/src/org/apache/batik/svggen/font/table/LigatureSubstFormat1.java +30 -30
  104. data/src/org/apache/batik/svggen/font/table/LocaTable.java +37 -37
  105. data/src/org/apache/batik/svggen/font/table/Lookup.java +41 -40
  106. data/src/org/apache/batik/svggen/font/table/LookupList.java +34 -34
  107. data/src/org/apache/batik/svggen/font/table/LookupSubtableFactory.java +7 -5
  108. data/src/org/apache/batik/svggen/font/table/MaxpTable.java +96 -96
  109. data/src/org/apache/batik/svggen/font/table/NameRecord.java +64 -65
  110. data/src/org/apache/batik/svggen/font/table/NameTable.java +33 -33
  111. data/src/org/apache/batik/svggen/font/table/Os2Table.java +196 -196
  112. data/src/org/apache/batik/svggen/font/table/Panose.java +14 -12
  113. data/src/org/apache/batik/svggen/font/table/PostTable.java +338 -338
  114. data/src/org/apache/batik/svggen/font/table/PrepTable.java +9 -9
  115. data/src/org/apache/batik/svggen/font/table/Program.java +15 -15
  116. data/src/org/apache/batik/svggen/font/table/RangeRecord.java +26 -25
  117. data/src/org/apache/batik/svggen/font/table/Script.java +38 -38
  118. data/src/org/apache/batik/svggen/font/table/ScriptList.java +42 -42
  119. data/src/org/apache/batik/svggen/font/table/ScriptRecord.java +22 -22
  120. data/src/org/apache/batik/svggen/font/table/ScriptTags.java +2 -1
  121. data/src/org/apache/batik/svggen/font/table/SingleSubst.java +15 -16
  122. data/src/org/apache/batik/svggen/font/table/SingleSubstFormat1.java +33 -33
  123. data/src/org/apache/batik/svggen/font/table/SingleSubstFormat2.java +32 -32
  124. data/src/org/apache/batik/svggen/font/table/Table.java +171 -170
  125. data/src/org/apache/batik/svggen/font/table/TableDirectory.java +55 -55
  126. data/src/org/apache/batik/svggen/font/table/TableFactory.java +92 -93
  127. metadata +18 -19
  128. data/.travis.yml +0 -10
  129. data/calculate_torsional_angle.rb +0 -17
@@ -18,7 +18,7 @@
18
18
  package org.apache.batik.svggen.font.table;
19
19
 
20
20
  import java.io.IOException;
21
- import org.apache.batik.svggen.font.*;
21
+ import org.apache.batik.svggen.font.RandomAccessFileEmulator;
22
22
 
23
23
  /**
24
24
  *
@@ -27,30 +27,33 @@ import org.apache.batik.svggen.font.*;
27
27
  */
28
28
  public class Feature {
29
29
 
30
- private final int featureParams;
31
- private final int lookupCount;
32
- private final int[] lookupListIndex;
33
-
34
- /** Creates new Feature
35
- * @param raf
36
- * @param offset
37
- * @throws java.io.IOException */
38
- protected Feature(RandomAccessFileEmulator raf, int offset) throws IOException {
39
- raf.seek(offset);
40
- featureParams = raf.readUnsignedShort();
41
- lookupCount = raf.readUnsignedShort();
42
- lookupListIndex = new int[lookupCount];
43
- for (int i = 0; i < lookupCount; i++) {
44
- lookupListIndex[i] = raf.readUnsignedShort();
45
- }
30
+ private final int featureParams;
31
+ private final int lookupCount;
32
+ private final int[] lookupListIndex;
33
+
34
+ /**
35
+ * Creates new Feature
36
+ *
37
+ * @param raf
38
+ * @param offset
39
+ * @throws java.io.IOException
40
+ */
41
+ protected Feature(RandomAccessFileEmulator raf, int offset) throws IOException {
42
+ raf.seek(offset);
43
+ featureParams = raf.readUnsignedShort();
44
+ lookupCount = raf.readUnsignedShort();
45
+ lookupListIndex = new int[lookupCount];
46
+ for (int i = 0; i < lookupCount; i++) {
47
+ lookupListIndex[i] = raf.readUnsignedShort();
46
48
  }
49
+ }
47
50
 
48
- public int getLookupCount() {
49
- return lookupCount;
50
- }
51
+ public int getLookupCount() {
52
+ return lookupCount;
53
+ }
51
54
 
52
- public int getLookupListIndex(int i) {
53
- return lookupListIndex[i];
54
- }
55
+ public int getLookupListIndex(int i) {
56
+ return lookupListIndex[i];
57
+ }
55
58
 
56
59
  }
@@ -18,7 +18,7 @@
18
18
  package org.apache.batik.svggen.font.table;
19
19
 
20
20
  import java.io.IOException;
21
- import org.apache.batik.svggen.font.*;
21
+ import org.apache.batik.svggen.font.RandomAccessFileEmulator;
22
22
 
23
23
  /**
24
24
  *
@@ -27,44 +27,46 @@ import org.apache.batik.svggen.font.*;
27
27
  */
28
28
  public class FeatureList {
29
29
 
30
- private final int featureCount;
31
- private final FeatureRecord[] featureRecords;
32
- private final Feature[] features;
30
+ private final int featureCount;
31
+ private final FeatureRecord[] featureRecords;
32
+ private final Feature[] features;
33
33
 
34
- /** Creates new FeatureList
35
- * @param raf
36
- * @param offset
37
- * @throws java.io.IOException
38
- */
39
- public FeatureList(RandomAccessFileEmulator raf, int offset) throws IOException {
40
- raf.seek(offset);
41
- featureCount = raf.readUnsignedShort();
42
- featureRecords = new FeatureRecord[featureCount];
43
- features = new Feature[featureCount];
44
- for (int i = 0; i < featureCount; i++) {
45
- featureRecords[i] = new FeatureRecord(raf);
46
- }
47
- for (int i = 0; i < featureCount; i++) {
48
- features[i] = new Feature(raf, offset + featureRecords[i].getOffset());
49
- }
34
+ /**
35
+ * Creates new FeatureList
36
+ *
37
+ * @param raf
38
+ * @param offset
39
+ * @throws java.io.IOException
40
+ */
41
+ public FeatureList(RandomAccessFileEmulator raf, int offset) throws IOException {
42
+ raf.seek(offset);
43
+ featureCount = raf.readUnsignedShort();
44
+ featureRecords = new FeatureRecord[featureCount];
45
+ features = new Feature[featureCount];
46
+ for (int i = 0; i < featureCount; i++) {
47
+ featureRecords[i] = new FeatureRecord(raf);
48
+ }
49
+ for (int i = 0; i < featureCount; i++) {
50
+ features[i] = new Feature(raf, offset + featureRecords[i].getOffset());
50
51
  }
52
+ }
51
53
 
52
- public Feature findFeature(LangSys langSys, String tag) {
53
- if (tag.length() != 4) {
54
- return null;
55
- }
56
- int tagVal = ((tag.charAt(0)<<24)
57
- | (tag.charAt(1)<<16)
58
- | (tag.charAt(2)<<8)
59
- | tag.charAt(3));
60
- for (int i = 0; i < featureCount; i++) {
61
- if (featureRecords[i].getTag() == tagVal) {
62
- if (langSys.isFeatureIndexed(i)) {
63
- return features[i];
64
- }
65
- }
54
+ public Feature findFeature(LangSys langSys, String tag) {
55
+ if (tag.length() != 4) {
56
+ return null;
57
+ }
58
+ int tagVal = ((tag.charAt(0) << 24)
59
+ | (tag.charAt(1) << 16)
60
+ | (tag.charAt(2) << 8)
61
+ | tag.charAt(3));
62
+ for (int i = 0; i < featureCount; i++) {
63
+ if (featureRecords[i].getTag() == tagVal) {
64
+ if (langSys.isFeatureIndexed(i)) {
65
+ return features[i];
66
66
  }
67
- return null;
67
+ }
68
68
  }
69
+ return null;
70
+ }
69
71
 
70
72
  }
@@ -18,7 +18,7 @@
18
18
  package org.apache.batik.svggen.font.table;
19
19
 
20
20
  import java.io.IOException;
21
- import org.apache.batik.svggen.font.*;
21
+ import org.apache.batik.svggen.font.RandomAccessFileEmulator;
22
22
 
23
23
  /**
24
24
  *
@@ -27,26 +27,26 @@ import org.apache.batik.svggen.font.*;
27
27
  */
28
28
  public class FeatureRecord {
29
29
 
30
- private final int tag;
31
- private final int offset;
32
-
33
- /**
34
- * Creates new FeatureRecord
35
- *
36
- * @param raf
37
- * @throws java.io.IOException
38
- */
39
- public FeatureRecord(RandomAccessFileEmulator raf) throws IOException {
40
- tag = raf.readInt();
41
- offset = raf.readUnsignedShort();
42
- }
43
-
44
- public int getTag() {
45
- return tag;
46
- }
47
-
48
- public int getOffset() {
49
- return offset;
50
- }
30
+ private final int tag;
31
+ private final int offset;
32
+
33
+ /**
34
+ * Creates new FeatureRecord
35
+ *
36
+ * @param raf
37
+ * @throws java.io.IOException
38
+ */
39
+ public FeatureRecord(RandomAccessFileEmulator raf) throws IOException {
40
+ tag = raf.readInt();
41
+ offset = raf.readUnsignedShort();
42
+ }
43
+
44
+ public int getTag() {
45
+ return tag;
46
+ }
47
+
48
+ public int getOffset() {
49
+ return offset;
50
+ }
51
51
 
52
52
  }
@@ -24,7 +24,8 @@ package org.apache.batik.svggen.font.table;
24
24
  * @author <a href="mailto:vincent.hardy@eng.sun.com">Vincent Hardy</a>
25
25
  */
26
26
  public interface FeatureTags {
27
- String FEATURE_TAG_INIT = "init";
28
- String FEATURE_TAG_MEDI = "medi";
29
- String FEATURE_TAG_FINA = "fina";
27
+
28
+ String FEATURE_TAG_INIT = "init";
29
+ String FEATURE_TAG_MEDI = "medi";
30
+ String FEATURE_TAG_FINA = "fina";
30
31
  }
@@ -18,7 +18,7 @@
18
18
  package org.apache.batik.svggen.font.table;
19
19
 
20
20
  import java.io.IOException;
21
- import org.apache.batik.svggen.font.*;
21
+ import org.apache.batik.svggen.font.RandomAccessFileEmulator;
22
22
 
23
23
  /**
24
24
  * @version $Id: FpgmTable.java,v 1.3 2004/08/18 07:15:20 vhardy Exp $
@@ -26,13 +26,13 @@ import org.apache.batik.svggen.font.*;
26
26
  */
27
27
  public class FpgmTable extends Program implements Table {
28
28
 
29
- protected FpgmTable(DirectoryEntry de,RandomAccessFileEmulator raf) throws IOException {
30
- raf.seek(de.getOffset());
31
- readInstructions(raf, de.getLength());
32
- }
29
+ protected FpgmTable(DirectoryEntry de, RandomAccessFileEmulator raf) throws IOException {
30
+ raf.seek(de.getOffset());
31
+ readInstructions(raf, de.getLength());
32
+ }
33
33
 
34
- @Override
35
- public int getType() {
36
- return fpgm;
37
- }
34
+ @Override
35
+ public int getType() {
36
+ return FPGM;
37
+ }
38
38
  }
@@ -25,141 +25,143 @@ import java.io.ByteArrayInputStream;
25
25
  */
26
26
  public class GlyfCompositeComp {
27
27
 
28
- public static final short ARG_1_AND_2_ARE_WORDS = 0x0001;
29
- public static final short ARGS_ARE_XY_VALUES = 0x0002;
30
- public static final short ROUND_XY_TO_GRID = 0x0004;
31
- public static final short WE_HAVE_A_SCALE = 0x0008;
32
- public static final short MORE_COMPONENTS = 0x0020;
33
- public static final short WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;
34
- public static final short WE_HAVE_A_TWO_BY_TWO = 0x0080;
35
- public static final short WE_HAVE_INSTRUCTIONS = 0x0100;
36
- public static final short USE_MY_METRICS = 0x0200;
37
-
38
- private final int firstIndex;
39
- private final int firstContour;
40
- private final short argument1;
41
- private final short argument2;
42
- private final short flags;
43
- private final short glyphIndex;
44
- private double xscale = 1.0;
45
- private double yscale = 1.0;
46
- private double scale01 = 0.0;
47
- private double scale10 = 0.0;
48
- private int xtranslate = 0;
49
- private int ytranslate = 0;
50
- private int point1 = 0;
51
- private int point2 = 0;
52
-
53
- protected GlyfCompositeComp(int firstIndex, int firstContour, ByteArrayInputStream bais) {
54
- this.firstIndex = firstIndex;
55
- this.firstContour = firstContour;
56
- flags = (short)(bais.read()<<8 | bais.read());
57
- glyphIndex = (short)(bais.read()<<8 | bais.read());
58
-
59
- // Get the arguments as just their raw values
60
- if ((flags & ARG_1_AND_2_ARE_WORDS) != 0) {
61
- argument1 = (short)(bais.read()<<8 | bais.read());
62
- argument2 = (short)(bais.read()<<8 | bais.read());
63
- } else {
64
- argument1 = (short) bais.read();
65
- argument2 = (short) bais.read();
66
- }
67
-
68
- // Assign the arguments according to the flags
69
- if ((flags & ARGS_ARE_XY_VALUES) != 0) {
70
- xtranslate = argument1;
71
- ytranslate = argument2;
72
- } else {
73
- point1 = argument1;
74
- point2 = argument2;
75
- }
76
-
77
- // Get the scale values (if any)
78
- if ((flags & WE_HAVE_A_SCALE) != 0) {
79
- int i = (short)(bais.read()<<8 | bais.read());
80
- xscale = yscale = (double) i / (double) 0x4000;
81
- } else if ((flags & WE_HAVE_AN_X_AND_Y_SCALE) != 0) {
82
- short i = (short)(bais.read()<<8 | bais.read());
83
- xscale = (double) i / (double) 0x4000;
84
- i = (short)(bais.read()<<8 | bais.read());
85
- yscale = (double) i / (double) 0x4000;
86
- } else if ((flags & WE_HAVE_A_TWO_BY_TWO) != 0) {
87
- int i = (short)(bais.read()<<8 | bais.read());
88
- xscale = (double) i / (double) 0x4000;
89
- i = (short)(bais.read()<<8 | bais.read());
90
- scale01 = (double) i / (double) 0x4000;
91
- i = (short)(bais.read()<<8 | bais.read());
92
- scale10 = (double) i / (double) 0x4000;
93
- i = (short)(bais.read()<<8 | bais.read());
94
- yscale = (double) i / (double) 0x4000;
95
- }
28
+ public static final short ARG_1_AND_2_ARE_WORDS = 0x0001;
29
+ public static final short ARGS_ARE_XY_VALUES = 0x0002;
30
+ public static final short ROUND_XY_TO_GRID = 0x0004;
31
+ public static final short WE_HAVE_A_SCALE = 0x0008;
32
+ public static final short MORE_COMPONENTS = 0x0020;
33
+ public static final short WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;
34
+ public static final short WE_HAVE_A_TWO_BY_TWO = 0x0080;
35
+ public static final short WE_HAVE_INSTRUCTIONS = 0x0100;
36
+ public static final short USE_MY_METRICS = 0x0200;
37
+
38
+ private final int firstIndex;
39
+ private final int firstContour;
40
+ private final short argument1;
41
+ private final short argument2;
42
+ private final short flags;
43
+ private final short glyphIndex;
44
+ private double xscale = 1.0;
45
+ private double yscale = 1.0;
46
+ private double scale01 = 0.0;
47
+ private double scale10 = 0.0;
48
+ private int xtranslate = 0;
49
+ private int ytranslate = 0;
50
+ private int point1 = 0;
51
+ private int point2 = 0;
52
+
53
+ protected GlyfCompositeComp(int firstIndex, int firstContour, ByteArrayInputStream bais) {
54
+ this.firstIndex = firstIndex;
55
+ this.firstContour = firstContour;
56
+ flags = (short) (bais.read() << 8 | bais.read());
57
+ glyphIndex = (short) (bais.read() << 8 | bais.read());
58
+
59
+ // Get the arguments as just their raw values
60
+ if ((flags & ARG_1_AND_2_ARE_WORDS) != 0) {
61
+ argument1 = (short) (bais.read() << 8 | bais.read());
62
+ argument2 = (short) (bais.read() << 8 | bais.read());
63
+ } else {
64
+ argument1 = (short) bais.read();
65
+ argument2 = (short) bais.read();
96
66
  }
97
67
 
98
- public int getFirstIndex() {
99
- return firstIndex;
68
+ // Assign the arguments according to the flags
69
+ if ((flags & ARGS_ARE_XY_VALUES) != 0) {
70
+ xtranslate = argument1;
71
+ ytranslate = argument2;
72
+ } else {
73
+ point1 = argument1;
74
+ point2 = argument2;
100
75
  }
101
76
 
102
- public int getFirstContour() {
103
- return firstContour;
104
- }
105
-
106
- public short getArgument1() {
107
- return argument1;
108
- }
109
-
110
- public short getArgument2() {
111
- return argument2;
112
- }
113
-
114
- public short getFlags() {
115
- return flags;
116
- }
117
-
118
- public short getGlyphIndex() {
119
- return glyphIndex;
120
- }
121
-
122
- public double getScale01() {
123
- return scale01;
124
- }
125
-
126
- public double getScale10() {
127
- return scale10;
128
- }
129
-
130
- public double getXScale() {
131
- return xscale;
132
- }
133
-
134
- public double getYScale() {
135
- return yscale;
136
- }
137
-
138
- public int getXTranslate() {
139
- return xtranslate;
140
- }
141
-
142
- public int getYTranslate() {
143
- return ytranslate;
144
- }
145
-
146
- /**
147
- * Transforms an x-coordinate of a point for this component.
148
- * @param x The x-coordinate of the point to transform
149
- * @param y The y-coordinate of the point to transform
150
- * @return The transformed x-coordinate
151
- */
152
- public int scaleX(int x, int y) {
153
- return Math.round((float)(x * xscale + y * scale10));
154
- }
155
-
156
- /**
157
- * Transforms a y-coordinate of a point for this component.
158
- * @param x The x-coordinate of the point to transform
159
- * @param y The y-coordinate of the point to transform
160
- * @return The transformed y-coordinate
161
- */
162
- public int scaleY(int x, int y) {
163
- return Math.round((float)(x * scale01 + y * yscale));
77
+ // Get the scale values (if any)
78
+ if ((flags & WE_HAVE_A_SCALE) != 0) {
79
+ int i = (short) (bais.read() << 8 | bais.read());
80
+ xscale = yscale = (double) i / (double) 0x4000;
81
+ } else if ((flags & WE_HAVE_AN_X_AND_Y_SCALE) != 0) {
82
+ short i = (short) (bais.read() << 8 | bais.read());
83
+ xscale = (double) i / (double) 0x4000;
84
+ i = (short) (bais.read() << 8 | bais.read());
85
+ yscale = (double) i / (double) 0x4000;
86
+ } else if ((flags & WE_HAVE_A_TWO_BY_TWO) != 0) {
87
+ int i = (short) (bais.read() << 8 | bais.read());
88
+ xscale = (double) i / (double) 0x4000;
89
+ i = (short) (bais.read() << 8 | bais.read());
90
+ scale01 = (double) i / (double) 0x4000;
91
+ i = (short) (bais.read() << 8 | bais.read());
92
+ scale10 = (double) i / (double) 0x4000;
93
+ i = (short) (bais.read() << 8 | bais.read());
94
+ yscale = (double) i / (double) 0x4000;
164
95
  }
96
+ }
97
+
98
+ public int getFirstIndex() {
99
+ return firstIndex;
100
+ }
101
+
102
+ public int getFirstContour() {
103
+ return firstContour;
104
+ }
105
+
106
+ public short getArgument1() {
107
+ return argument1;
108
+ }
109
+
110
+ public short getArgument2() {
111
+ return argument2;
112
+ }
113
+
114
+ public short getFlags() {
115
+ return flags;
116
+ }
117
+
118
+ public short getGlyphIndex() {
119
+ return glyphIndex;
120
+ }
121
+
122
+ public double getScale01() {
123
+ return scale01;
124
+ }
125
+
126
+ public double getScale10() {
127
+ return scale10;
128
+ }
129
+
130
+ public double getXScale() {
131
+ return xscale;
132
+ }
133
+
134
+ public double getYScale() {
135
+ return yscale;
136
+ }
137
+
138
+ public int getXTranslate() {
139
+ return xtranslate;
140
+ }
141
+
142
+ public int getYTranslate() {
143
+ return ytranslate;
144
+ }
145
+
146
+ /**
147
+ * Transforms an x-coordinate of a point for this component.
148
+ *
149
+ * @param x The x-coordinate of the point to transform
150
+ * @param y The y-coordinate of the point to transform
151
+ * @return The transformed x-coordinate
152
+ */
153
+ public int scaleX(int x, int y) {
154
+ return Math.round((float) (x * xscale + y * scale10));
155
+ }
156
+
157
+ /**
158
+ * Transforms a y-coordinate of a point for this component.
159
+ *
160
+ * @param x The x-coordinate of the point to transform
161
+ * @param y The y-coordinate of the point to transform
162
+ * @return The transformed y-coordinate
163
+ */
164
+ public int scaleY(int x, int y) {
165
+ return Math.round((float) (x * scale01 + y * yscale));
166
+ }
165
167
  }