28 import javafx.geometry.VPos;
29 import javafx.scene.text.Font;
30 import java.nio.IntBuffer;
31 import java.util.concurrent.ExecutionException;
32 import java.util.concurrent.FutureTask;
33 import java.util.LinkedList;
34 import com.sun.javafx.font.PGFont;
35 import com.sun.javafx.geom.Arc2D;
36 import com.sun.javafx.geom.BaseBounds;
37 import com.sun.javafx.geom.DirtyRegionContainer;
38 import com.sun.javafx.geom.DirtyRegionPool;
39 import com.sun.javafx.geom.Path2D;
40 import com.sun.javafx.geom.PathIterator;
41 import com.sun.javafx.geom.RectBounds;
42 import com.sun.javafx.geom.Rectangle;
43 import com.sun.javafx.geom.RoundRectangle2D;
44 import com.sun.javafx.geom.Shape;
45 import com.sun.javafx.geom.transform.Affine2D;
46 import com.sun.javafx.geom.transform.BaseTransform;
47 import com.sun.javafx.geom.transform.NoninvertibleTransformException;
48 import com.sun.javafx.text.PrismTextLayout;
49 import com.sun.javafx.tk.RenderJob;
50 import com.sun.javafx.tk.ScreenConfigurationAccessor;
51 import com.sun.javafx.tk.Toolkit;
52 import com.sun.prism.BasicStroke;
53 import com.sun.prism.CompositeMode;
54 import com.sun.prism.Graphics;
55 import com.sun.prism.GraphicsPipeline;
56 import com.sun.prism.Image;
57 import com.sun.prism.MaskTextureGraphics;
58 import com.sun.prism.PrinterGraphics;
59 import com.sun.prism.RTTexture;
60 import com.sun.prism.ResourceFactory;
61 import com.sun.prism.Texture;
62 import com.sun.prism.Texture.WrapMode;
63 import com.sun.prism.paint.Color;
64 import com.sun.prism.paint.Paint;
65 import com.sun.scenario.effect.Blend;
66 import com.sun.scenario.effect.Blend.Mode;
67 import com.sun.scenario.effect.Effect;
369 transform = new Affine2D();
370 clipStack = new LinkedList<Path2D>();
371 initAttributes();
372 }
373
374 private void initAttributes() {
375 globalAlpha = 1.0f;
376 blendmode = Mode.SRC_OVER;
377 fillPaint = Color.BLACK;
378 strokePaint = Color.BLACK;
379 linewidth = 1.0f;
380 linecap = BasicStroke.CAP_SQUARE;
381 linejoin = BasicStroke.JOIN_MITER;
382 miterlimit = 10f;
383 dashes = null;
384 dashOffset = 0.0f;
385 stroke = null;
386 path.setWindingRule(Path2D.WIND_NON_ZERO);
387 // ngtext stores no state between render operations
388 // textLayout stores no state between render operations
389 pgfont = (PGFont) Font.getDefault().impl_getNativeFont();
390 smoothing = SMOOTH_GRAY;
391 align = ALIGN_LEFT;
392 baseline = VPos.BASELINE.ordinal();
393 transform.setToScale(highestPixelScale, highestPixelScale);
394 clipStack.clear();
395 resetClip(false);
396 }
397
398 static final Affine2D TEMP_PATH_TX = new Affine2D();
399 static final int numCoords[] = { 2, 2, 4, 6, 0 };
400 Shape untransformedPath = new Shape() {
401
402 @Override
403 public RectBounds getBounds() {
404 if (transform.isTranslateOrIdentity()) {
405 RectBounds rb = path.getBounds();
406 if (transform.isIdentity()) {
407 return rb;
408 } else {
409 float tx = (float) transform.getMxt();
|
28 import javafx.geometry.VPos;
29 import javafx.scene.text.Font;
30 import java.nio.IntBuffer;
31 import java.util.concurrent.ExecutionException;
32 import java.util.concurrent.FutureTask;
33 import java.util.LinkedList;
34 import com.sun.javafx.font.PGFont;
35 import com.sun.javafx.geom.Arc2D;
36 import com.sun.javafx.geom.BaseBounds;
37 import com.sun.javafx.geom.DirtyRegionContainer;
38 import com.sun.javafx.geom.DirtyRegionPool;
39 import com.sun.javafx.geom.Path2D;
40 import com.sun.javafx.geom.PathIterator;
41 import com.sun.javafx.geom.RectBounds;
42 import com.sun.javafx.geom.Rectangle;
43 import com.sun.javafx.geom.RoundRectangle2D;
44 import com.sun.javafx.geom.Shape;
45 import com.sun.javafx.geom.transform.Affine2D;
46 import com.sun.javafx.geom.transform.BaseTransform;
47 import com.sun.javafx.geom.transform.NoninvertibleTransformException;
48 import com.sun.javafx.text.FontHelper;
49 import com.sun.javafx.text.PrismTextLayout;
50 import com.sun.javafx.tk.RenderJob;
51 import com.sun.javafx.tk.ScreenConfigurationAccessor;
52 import com.sun.javafx.tk.Toolkit;
53 import com.sun.prism.BasicStroke;
54 import com.sun.prism.CompositeMode;
55 import com.sun.prism.Graphics;
56 import com.sun.prism.GraphicsPipeline;
57 import com.sun.prism.Image;
58 import com.sun.prism.MaskTextureGraphics;
59 import com.sun.prism.PrinterGraphics;
60 import com.sun.prism.RTTexture;
61 import com.sun.prism.ResourceFactory;
62 import com.sun.prism.Texture;
63 import com.sun.prism.Texture.WrapMode;
64 import com.sun.prism.paint.Color;
65 import com.sun.prism.paint.Paint;
66 import com.sun.scenario.effect.Blend;
67 import com.sun.scenario.effect.Blend.Mode;
68 import com.sun.scenario.effect.Effect;
370 transform = new Affine2D();
371 clipStack = new LinkedList<Path2D>();
372 initAttributes();
373 }
374
375 private void initAttributes() {
376 globalAlpha = 1.0f;
377 blendmode = Mode.SRC_OVER;
378 fillPaint = Color.BLACK;
379 strokePaint = Color.BLACK;
380 linewidth = 1.0f;
381 linecap = BasicStroke.CAP_SQUARE;
382 linejoin = BasicStroke.JOIN_MITER;
383 miterlimit = 10f;
384 dashes = null;
385 dashOffset = 0.0f;
386 stroke = null;
387 path.setWindingRule(Path2D.WIND_NON_ZERO);
388 // ngtext stores no state between render operations
389 // textLayout stores no state between render operations
390 pgfont = (PGFont) FontHelper.getNativeFont(Font.getDefault());
391 smoothing = SMOOTH_GRAY;
392 align = ALIGN_LEFT;
393 baseline = VPos.BASELINE.ordinal();
394 transform.setToScale(highestPixelScale, highestPixelScale);
395 clipStack.clear();
396 resetClip(false);
397 }
398
399 static final Affine2D TEMP_PATH_TX = new Affine2D();
400 static final int numCoords[] = { 2, 2, 4, 6, 0 };
401 Shape untransformedPath = new Shape() {
402
403 @Override
404 public RectBounds getBounds() {
405 if (transform.isTranslateOrIdentity()) {
406 RectBounds rb = path.getBounds();
407 if (transform.isIdentity()) {
408 return rb;
409 } else {
410 float tx = (float) transform.getMxt();
|