< prev index next >

modules/graphics/src/main/java/com/sun/javafx/tk/quantum/QuantumToolkit.java

Print this page




 112 import com.sun.javafx.tk.TKSystemMenu;
 113 import com.sun.javafx.tk.Toolkit;
 114 import com.sun.prism.BasicStroke;
 115 import com.sun.prism.Graphics;
 116 import com.sun.prism.GraphicsPipeline;
 117 import com.sun.prism.PixelFormat;
 118 import com.sun.prism.RTTexture;
 119 import com.sun.prism.ResourceFactory;
 120 import com.sun.prism.ResourceFactoryListener;
 121 import com.sun.prism.Texture.WrapMode;
 122 import com.sun.prism.impl.Disposer;
 123 import com.sun.prism.impl.PrismSettings;
 124 import com.sun.scenario.DelayedRunnable;
 125 import com.sun.scenario.animation.AbstractMasterTimer;
 126 import com.sun.scenario.effect.FilterContext;
 127 import com.sun.scenario.effect.Filterable;
 128 import com.sun.scenario.effect.impl.prism.PrFilterContext;
 129 import com.sun.scenario.effect.impl.prism.PrImage;
 130 import com.sun.javafx.logging.PulseLogger;
 131 import static com.sun.javafx.logging.PulseLogger.PULSE_LOGGING_ENABLED;

 132 import com.sun.prism.impl.ManagedResource;
 133 
 134 public final class QuantumToolkit extends Toolkit {
 135 
 136     public static final boolean verbose =
 137             AccessController.doPrivileged((PrivilegedAction<Boolean>) () -> Boolean.getBoolean("quantum.verbose"));
 138 
 139     public static final boolean pulseDebug =
 140             AccessController.doPrivileged((PrivilegedAction<Boolean>) () -> Boolean.getBoolean("quantum.pulse"));
 141 
 142     private static final boolean multithreaded =
 143             AccessController.doPrivileged((PrivilegedAction<Boolean>) () -> {
 144                 // If it is not specified, or it is true, then it should
 145                 // be true. Otherwise it should be false.
 146                 String value = System.getProperty("quantum.multithreaded");
 147                 if (value == null) return true;
 148                 final boolean result = Boolean.parseBoolean(value);
 149                 if (verbose) {
 150                     System.out.println(result ? "Multi-Threading Enabled" : "Multi-Threading Disabled");
 151                 }


 879         int cmi = 0;
 880         if (paint.getCycleMethod() == CycleMethod.NO_CYCLE) {
 881             cmi = com.sun.prism.paint.Gradient.PAD;
 882         } else if (paint.getCycleMethod() == CycleMethod.REFLECT) {
 883             cmi = com.sun.prism.paint.Gradient.REFLECT;
 884         } else {
 885             cmi = com.sun.prism.paint.Gradient.REPEAT;
 886         }
 887 
 888         // TODO: extract colors/offsets and pass them in directly...
 889         List<com.sun.prism.paint.Stop> stops = convertStops(paint.getStops());
 890         return new com.sun.prism.paint.RadialGradient(cx, cy, fa, fd,
 891                 (float)paint.getRadius(), null, paint.isProportional(), cmi, stops);
 892     }
 893 
 894     @Override
 895     protected Object createImagePatternPaint(ImagePattern paint) {
 896         if (paint.getImage() == null) {
 897             return com.sun.prism.paint.Color.TRANSPARENT;
 898         } else {
 899             return new com.sun.prism.paint.ImagePattern((com.sun.prism.Image) paint.getImage().impl_getPlatformImage(),

 900                     (float)paint.getX(),
 901                     (float)paint.getY(),
 902                     (float)paint.getWidth(),
 903                     (float)paint.getHeight(),
 904                     paint.isProportional(),
 905                     Toolkit.getPaintAccessor().isMutable(paint));
 906         }
 907     }
 908 
 909     static BasicStroke tmpStroke = new BasicStroke();
 910     private void initStroke(StrokeType pgtype, double strokewidth,
 911                             StrokeLineCap pgcap,
 912                             StrokeLineJoin pgjoin, float miterLimit,
 913                             float[] dashArray, float dashOffset)
 914     {
 915         int type;
 916         if (pgtype == StrokeType.CENTERED) {
 917             type = BasicStroke.TYPE_CENTERED;
 918         } else if (pgtype == StrokeType.INSIDE) {
 919             type = BasicStroke.TYPE_INNER;


1038                 el = new CubicCurveTo (
1039                     struct.f0,
1040                     struct.f1,
1041                     struct.f2,
1042                     struct.f3,
1043                     struct.f4,
1044                     struct.f5);
1045             } else if (type == PathIterator.SEG_CLOSE) {
1046                 el = new ClosePath();
1047             } else {
1048                 throw new IllegalStateException("Invalid element type: " + type);
1049             }
1050             helper.next();
1051             elements.add(el);
1052         }
1053 
1054         return elements.toArray(new PathElement[elements.size()]);
1055     }
1056 
1057     @Override public Filterable toFilterable(Image img) {
1058         return PrImage.create((com.sun.prism.Image) img.impl_getPlatformImage());
1059     }
1060 
1061     @Override public FilterContext getFilterContext(Object config) {
1062         if (config == null || (!(config instanceof com.sun.glass.ui.Screen))) {
1063             return PrFilterContext.getDefaultInstance();
1064         }
1065         Screen screen = (Screen)config;
1066         return PrFilterContext.getInstance(screen);
1067     }
1068 
1069     @Override public AbstractMasterTimer getMasterTimer() {
1070         return MasterTimer.getInstance();
1071     }
1072 
1073     @Override public FontLoader getFontLoader() {
1074         return com.sun.javafx.font.PrismFontLoader.getInstance();
1075     }
1076 
1077     @Override public TextLayoutFactory getTextLayoutFactory() {
1078         return com.sun.javafx.text.PrismTextLayoutFactory.getFactory();


1201         return clipboard;
1202     }
1203 
1204     private GlassSystemMenu systemMenu = new GlassSystemMenu();
1205     @Override public TKSystemMenu getSystemMenu() {
1206         return systemMenu;
1207     }
1208 
1209     @Override public TKClipboard getNamedClipboard(String name) {
1210         return null;
1211     }
1212 
1213     @Override public void startDrag(TKScene scene, Set<TransferMode> tm, TKDragSourceListener l, Dragboard dragboard) {
1214         if (dragboard == null) {
1215             throw new IllegalArgumentException("dragboard should not be null");
1216         }
1217 
1218         GlassScene view = (GlassScene)scene;
1219         view.setTKDragSourceListener(l);
1220 
1221         QuantumClipboard gc = (QuantumClipboard)dragboard.impl_getPeer();
1222         gc.setSupportedTransferMode(tm);
1223         gc.flush();
1224 
1225         // flush causes a modal DnD event loop, when we return, close the clipboard
1226         gc.close();
1227     }
1228 
1229     @Override public void enableDrop(TKScene s, TKDropTargetListener l) {
1230 
1231         assert s instanceof GlassScene;
1232 
1233         GlassScene view = (GlassScene)s;
1234         view.setTKDropTargetListener(l);
1235     }
1236 
1237     @Override public void registerDragGestureListener(TKScene s, Set<TransferMode> tm, TKDragGestureListener l) {
1238 
1239         assert s instanceof GlassScene;
1240 
1241         GlassScene view = (GlassScene)s;




 112 import com.sun.javafx.tk.TKSystemMenu;
 113 import com.sun.javafx.tk.Toolkit;
 114 import com.sun.prism.BasicStroke;
 115 import com.sun.prism.Graphics;
 116 import com.sun.prism.GraphicsPipeline;
 117 import com.sun.prism.PixelFormat;
 118 import com.sun.prism.RTTexture;
 119 import com.sun.prism.ResourceFactory;
 120 import com.sun.prism.ResourceFactoryListener;
 121 import com.sun.prism.Texture.WrapMode;
 122 import com.sun.prism.impl.Disposer;
 123 import com.sun.prism.impl.PrismSettings;
 124 import com.sun.scenario.DelayedRunnable;
 125 import com.sun.scenario.animation.AbstractMasterTimer;
 126 import com.sun.scenario.effect.FilterContext;
 127 import com.sun.scenario.effect.Filterable;
 128 import com.sun.scenario.effect.impl.prism.PrFilterContext;
 129 import com.sun.scenario.effect.impl.prism.PrImage;
 130 import com.sun.javafx.logging.PulseLogger;
 131 import static com.sun.javafx.logging.PulseLogger.PULSE_LOGGING_ENABLED;
 132 import com.sun.javafx.scene.input.DragboardHelper;
 133 import com.sun.prism.impl.ManagedResource;
 134 
 135 public final class QuantumToolkit extends Toolkit {
 136 
 137     public static final boolean verbose =
 138             AccessController.doPrivileged((PrivilegedAction<Boolean>) () -> Boolean.getBoolean("quantum.verbose"));
 139 
 140     public static final boolean pulseDebug =
 141             AccessController.doPrivileged((PrivilegedAction<Boolean>) () -> Boolean.getBoolean("quantum.pulse"));
 142 
 143     private static final boolean multithreaded =
 144             AccessController.doPrivileged((PrivilegedAction<Boolean>) () -> {
 145                 // If it is not specified, or it is true, then it should
 146                 // be true. Otherwise it should be false.
 147                 String value = System.getProperty("quantum.multithreaded");
 148                 if (value == null) return true;
 149                 final boolean result = Boolean.parseBoolean(value);
 150                 if (verbose) {
 151                     System.out.println(result ? "Multi-Threading Enabled" : "Multi-Threading Disabled");
 152                 }


 880         int cmi = 0;
 881         if (paint.getCycleMethod() == CycleMethod.NO_CYCLE) {
 882             cmi = com.sun.prism.paint.Gradient.PAD;
 883         } else if (paint.getCycleMethod() == CycleMethod.REFLECT) {
 884             cmi = com.sun.prism.paint.Gradient.REFLECT;
 885         } else {
 886             cmi = com.sun.prism.paint.Gradient.REPEAT;
 887         }
 888 
 889         // TODO: extract colors/offsets and pass them in directly...
 890         List<com.sun.prism.paint.Stop> stops = convertStops(paint.getStops());
 891         return new com.sun.prism.paint.RadialGradient(cx, cy, fa, fd,
 892                 (float)paint.getRadius(), null, paint.isProportional(), cmi, stops);
 893     }
 894 
 895     @Override
 896     protected Object createImagePatternPaint(ImagePattern paint) {
 897         if (paint.getImage() == null) {
 898             return com.sun.prism.paint.Color.TRANSPARENT;
 899         } else {
 900             return new com.sun.prism.paint.ImagePattern(
 901                     (com.sun.prism.Image) Toolkit.getImageAccessor().getPlatformImage(paint.getImage()),
 902                     (float)paint.getX(),
 903                     (float)paint.getY(),
 904                     (float)paint.getWidth(),
 905                     (float)paint.getHeight(),
 906                     paint.isProportional(),
 907                     Toolkit.getPaintAccessor().isMutable(paint));
 908         }
 909     }
 910 
 911     static BasicStroke tmpStroke = new BasicStroke();
 912     private void initStroke(StrokeType pgtype, double strokewidth,
 913                             StrokeLineCap pgcap,
 914                             StrokeLineJoin pgjoin, float miterLimit,
 915                             float[] dashArray, float dashOffset)
 916     {
 917         int type;
 918         if (pgtype == StrokeType.CENTERED) {
 919             type = BasicStroke.TYPE_CENTERED;
 920         } else if (pgtype == StrokeType.INSIDE) {
 921             type = BasicStroke.TYPE_INNER;


1040                 el = new CubicCurveTo (
1041                     struct.f0,
1042                     struct.f1,
1043                     struct.f2,
1044                     struct.f3,
1045                     struct.f4,
1046                     struct.f5);
1047             } else if (type == PathIterator.SEG_CLOSE) {
1048                 el = new ClosePath();
1049             } else {
1050                 throw new IllegalStateException("Invalid element type: " + type);
1051             }
1052             helper.next();
1053             elements.add(el);
1054         }
1055 
1056         return elements.toArray(new PathElement[elements.size()]);
1057     }
1058 
1059     @Override public Filterable toFilterable(Image img) {
1060         return PrImage.create((com.sun.prism.Image) Toolkit.getImageAccessor().getPlatformImage(img));
1061     }
1062 
1063     @Override public FilterContext getFilterContext(Object config) {
1064         if (config == null || (!(config instanceof com.sun.glass.ui.Screen))) {
1065             return PrFilterContext.getDefaultInstance();
1066         }
1067         Screen screen = (Screen)config;
1068         return PrFilterContext.getInstance(screen);
1069     }
1070 
1071     @Override public AbstractMasterTimer getMasterTimer() {
1072         return MasterTimer.getInstance();
1073     }
1074 
1075     @Override public FontLoader getFontLoader() {
1076         return com.sun.javafx.font.PrismFontLoader.getInstance();
1077     }
1078 
1079     @Override public TextLayoutFactory getTextLayoutFactory() {
1080         return com.sun.javafx.text.PrismTextLayoutFactory.getFactory();


1203         return clipboard;
1204     }
1205 
1206     private GlassSystemMenu systemMenu = new GlassSystemMenu();
1207     @Override public TKSystemMenu getSystemMenu() {
1208         return systemMenu;
1209     }
1210 
1211     @Override public TKClipboard getNamedClipboard(String name) {
1212         return null;
1213     }
1214 
1215     @Override public void startDrag(TKScene scene, Set<TransferMode> tm, TKDragSourceListener l, Dragboard dragboard) {
1216         if (dragboard == null) {
1217             throw new IllegalArgumentException("dragboard should not be null");
1218         }
1219 
1220         GlassScene view = (GlassScene)scene;
1221         view.setTKDragSourceListener(l);
1222 
1223         QuantumClipboard gc = (QuantumClipboard) DragboardHelper.getPeer(dragboard);
1224         gc.setSupportedTransferMode(tm);
1225         gc.flush();
1226 
1227         // flush causes a modal DnD event loop, when we return, close the clipboard
1228         gc.close();
1229     }
1230 
1231     @Override public void enableDrop(TKScene s, TKDropTargetListener l) {
1232 
1233         assert s instanceof GlassScene;
1234 
1235         GlassScene view = (GlassScene)s;
1236         view.setTKDropTargetListener(l);
1237     }
1238 
1239     @Override public void registerDragGestureListener(TKScene s, Set<TransferMode> tm, TKDragGestureListener l) {
1240 
1241         assert s instanceof GlassScene;
1242 
1243         GlassScene view = (GlassScene)s;


< prev index next >