summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRami Santina <[email protected]>2011-05-10 14:29:12 +0300
committerRami Santina <[email protected]>2011-05-10 14:29:12 +0300
commit192631530503b8046abcfa9b2ca6760e3f39ae66 (patch)
treef19789a1407ae1a00cd9de1987f5a0529b647325
parent1303328b476570d94e56c9d2fc061e3b09cf538a (diff)
Fix: glyph outline orientation with the removal of inversion
-rwxr-xr-xsrc/jogl/classes/com/jogamp/graph/curve/OutlineShape.java13
-rw-r--r--src/jogl/classes/jogamp/graph/curve/tess/Loop.java4
-rw-r--r--src/jogl/classes/jogamp/graph/curve/text/GlyphShape.java3
3 files changed, 17 insertions, 3 deletions
diff --git a/src/jogl/classes/com/jogamp/graph/curve/OutlineShape.java b/src/jogl/classes/com/jogamp/graph/curve/OutlineShape.java
index 11307d518..7f8e386a1 100755
--- a/src/jogl/classes/com/jogamp/graph/curve/OutlineShape.java
+++ b/src/jogl/classes/com/jogamp/graph/curve/OutlineShape.java
@@ -279,6 +279,19 @@ public class OutlineShape implements Comparable<OutlineShape> {
bbox.resize(lo.getBounds());
}
}
+
+ /** Adds a vertex to the last open outline in the shape.
+ * at {@code position}
+ * @param position indx at which the vertex will be added
+ * @param v the vertex to be added to the OutlineShape
+ */
+ public final void addVertex(int position, Vertex v){
+ final Outline lo = getLastOutline();
+ lo.addVertex(position, v);
+ if( 0 == ( dirtyBits & DIRTY_BOUNDS ) ) {
+ bbox.resize(lo.getBounds());
+ }
+ }
/** Add a 2D {@link Vertex} to the last outline by defining the coordniate attribute
* of the vertex. The 2D vertex will be represented as Z=0.
diff --git a/src/jogl/classes/jogamp/graph/curve/tess/Loop.java b/src/jogl/classes/jogamp/graph/curve/tess/Loop.java
index 038d41b84..956fd56f2 100644
--- a/src/jogl/classes/jogamp/graph/curve/tess/Loop.java
+++ b/src/jogl/classes/jogamp/graph/curve/tess/Loop.java
@@ -104,8 +104,8 @@ public class Loop {
}
boolean isCCW = VectorUtil.ccw(vertices.get(0).getPoint(), vertices.get(1).getPoint(),
vertices.get(2).getPoint());
- boolean invert = isCCW != (direction == VectorUtil.CCW);
-
+ boolean invert = isCCW && (direction == VectorUtil.CW);
+
final int dir;
final int max;
final int edgeType;
diff --git a/src/jogl/classes/jogamp/graph/curve/text/GlyphShape.java b/src/jogl/classes/jogamp/graph/curve/text/GlyphShape.java
index b6f37a610..b47612f51 100644
--- a/src/jogl/classes/jogamp/graph/curve/text/GlyphShape.java
+++ b/src/jogl/classes/jogamp/graph/curve/text/GlyphShape.java
@@ -73,7 +73,8 @@ public class GlyphShape {
public final Vertex.Factory<? extends Vertex> vertexFactory() { return shape.vertexFactory(); }
private void addVertexToLastOutline(Vertex vertex) {
- shape.addVertex(vertex);
+ //FIXME: assuming font outline comes in CW order
+ shape.addVertex(0, vertex);
}
private void addOutlineVerticesFromGlyphVector(float[] coords, int segmentType){