modules/graphics/src/main/java/com/sun/prism/impl/shape/OpenPiscesPrismUtils.java
Print this page
*** 37,71 ****
import com.sun.openpisces.Stroker;
import com.sun.openpisces.TransformingPathConsumer2D;
import com.sun.prism.BasicStroke;
public class OpenPiscesPrismUtils {
! private static final Renderer savedRenderer = new Renderer(3, 3);
private static final Stroker savedStroker = new Stroker(savedRenderer);
private static final Dasher savedDasher = new Dasher(savedStroker);
private static TransformingPathConsumer2D.FilterSet transformer =
new TransformingPathConsumer2D.FilterSet();
private static PathConsumer2D initRenderer(BasicStroke stroke,
BaseTransform tx,
Rectangle clip,
! int pirule)
{
int oprule = (stroke == null && pirule == PathIterator.WIND_EVEN_ODD) ?
Renderer.WIND_EVEN_ODD : Renderer.WIND_NON_ZERO;
! savedRenderer.reset(clip.x, clip.y, clip.width, clip.height, oprule);
! PathConsumer2D ret = transformer.getConsumer(savedRenderer, tx);
if (stroke != null) {
! savedStroker.reset(stroke.getLineWidth(), stroke.getEndCap(),
stroke.getLineJoin(), stroke.getMiterLimit());
! savedStroker.setConsumer(ret);
! ret = savedStroker;
float dashes[] = stroke.getDashArray();
if (dashes != null) {
! savedDasher.reset(dashes, stroke.getDashPhase());
! ret = savedDasher;
}
}
return ret;
}
--- 37,88 ----
import com.sun.openpisces.Stroker;
import com.sun.openpisces.TransformingPathConsumer2D;
import com.sun.prism.BasicStroke;
public class OpenPiscesPrismUtils {
!
! private static final Renderer savedRenderer = new Renderer(0, 0);
private static final Stroker savedStroker = new Stroker(savedRenderer);
private static final Dasher savedDasher = new Dasher(savedStroker);
+ // Support shape antialiasing rendering
+ private static final Renderer savedAARenderer = new Renderer(3, 3);
+ private static final Stroker savedAAStroker = new Stroker(savedAARenderer);
+ private static final Dasher savedAADasher = new Dasher(savedAAStroker);
+
private static TransformingPathConsumer2D.FilterSet transformer =
new TransformingPathConsumer2D.FilterSet();
private static PathConsumer2D initRenderer(BasicStroke stroke,
BaseTransform tx,
Rectangle clip,
! int pirule,
! boolean antialiasedShape)
{
+ Renderer renderer = savedAARenderer;
+ Stroker stroker = savedAAStroker;
+ Dasher dasher = savedAADasher;
+
+ if (!antialiasedShape) {
+ renderer = savedRenderer;
+ stroker = savedStroker;
+ dasher = savedDasher;
+ }
+
int oprule = (stroke == null && pirule == PathIterator.WIND_EVEN_ODD) ?
Renderer.WIND_EVEN_ODD : Renderer.WIND_NON_ZERO;
! renderer.reset(clip.x, clip.y, clip.width, clip.height, oprule);
! PathConsumer2D ret = transformer.getConsumer(renderer, tx);
if (stroke != null) {
! stroker.reset(stroke.getLineWidth(), stroke.getEndCap(),
stroke.getLineJoin(), stroke.getMiterLimit());
! stroker.setConsumer(ret);
! ret = stroker;
float dashes[] = stroke.getDashArray();
if (dashes != null) {
! dasher.reset(dashes, stroke.getDashPhase());
! ret = dasher;
}
}
return ret;
}
*** 99,121 ****
}
public static Renderer setupRenderer(Shape shape,
BasicStroke stroke,
BaseTransform xform,
! Rectangle rclip)
{
PathIterator pi = shape.getPathIterator(null);
! feedConsumer(pi, initRenderer(stroke, xform, rclip, pi.getWindingRule()));
! return savedRenderer;
}
public static Renderer setupRenderer(Path2D p2d,
BasicStroke stroke,
BaseTransform xform,
! Rectangle rclip)
{
! PathConsumer2D pc2d = initRenderer(stroke, xform, rclip, p2d.getWindingRule());
float coords[] = p2d.getFloatCoordsNoClone();
byte types[] = p2d.getCommandsNoClone();
int nsegs = p2d.getNumCommands();
int coff = 0;
--- 116,140 ----
}
public static Renderer setupRenderer(Shape shape,
BasicStroke stroke,
BaseTransform xform,
! Rectangle rclip,
! boolean antialiasedShape)
{
PathIterator pi = shape.getPathIterator(null);
! feedConsumer(pi, initRenderer(stroke, xform, rclip, pi.getWindingRule(), antialiasedShape));
! return antialiasedShape ? savedAARenderer : savedRenderer;
}
public static Renderer setupRenderer(Path2D p2d,
BasicStroke stroke,
BaseTransform xform,
! Rectangle rclip,
! boolean antialiasedShape)
{
! PathConsumer2D pc2d = initRenderer(stroke, xform, rclip, p2d.getWindingRule(), antialiasedShape);
float coords[] = p2d.getFloatCoordsNoClone();
byte types[] = p2d.getCommandsNoClone();
int nsegs = p2d.getNumCommands();
int coff = 0;
*** 144,151 ****
pc2d.closePath();
break;
}
}
pc2d.pathDone();
! return savedRenderer;
}
}
--- 163,170 ----
pc2d.closePath();
break;
}
}
pc2d.pathDone();
! return antialiasedShape ? savedAARenderer : savedRenderer;
}
}