26 package com.sun.javafx.scene.web; 27 28 import com.sun.javafx.geom.BaseBounds; 29 import com.sun.javafx.geom.transform.BaseTransform; 30 import com.sun.javafx.jmx.MXNodeAlgorithm; 31 import com.sun.javafx.jmx.MXNodeAlgorithmContext; 32 import com.sun.javafx.sg.prism.NGNode; 33 import com.sun.prism.Graphics; 34 import com.sun.webkit.WebPage; 35 import com.sun.webkit.graphics.WCGraphicsContext; 36 import com.sun.webkit.graphics.WCGraphicsManager; 37 import javafx.scene.Node; 38 39 public final class Printable extends Node { 40 static { 41 PrintableHelper.setPrintableAccessor(new PrintableHelper.PrintableAccessor() { 42 @Override 43 public NGNode doCreatePeer(Node node) { 44 return ((Printable) node).doCreatePeer(); 45 } 46 }); 47 } 48 49 private final WebPage page; 50 private final NGNode peer; 51 52 public Printable(WebPage page, int pageIndex, float width) { 53 this.page = page; 54 peer = new Peer(pageIndex, width); 55 PrintableHelper.initHelper(this); 56 } 57 58 private NGNode doCreatePeer() { 59 return peer; 60 } 61 62 @Override public Object impl_processMXNode(MXNodeAlgorithm alg, MXNodeAlgorithmContext ctx) { 63 return null; 64 } 65 66 @Override public BaseBounds impl_computeGeomBounds(BaseBounds bounds, BaseTransform tx) { 67 return bounds; 68 } 69 70 @Override protected boolean impl_computeContains(double d, double d1) { 71 return false; 72 } 73 74 private final class Peer extends NGNode { 75 private final int pageIndex; 76 private final float width; 77 78 Peer(int pageIndex, float width) { 79 this.pageIndex = pageIndex; 80 this.width = width; 81 } 82 83 @Override protected void renderContent(Graphics g) { 84 WCGraphicsContext gc = WCGraphicsManager.getGraphicsManager(). 85 createGraphicsContext(g); 86 page.print(gc, pageIndex, width); 87 } 88 89 @Override protected boolean hasOverlappingContents() { 90 return false; | 26 package com.sun.javafx.scene.web; 27 28 import com.sun.javafx.geom.BaseBounds; 29 import com.sun.javafx.geom.transform.BaseTransform; 30 import com.sun.javafx.jmx.MXNodeAlgorithm; 31 import com.sun.javafx.jmx.MXNodeAlgorithmContext; 32 import com.sun.javafx.sg.prism.NGNode; 33 import com.sun.prism.Graphics; 34 import com.sun.webkit.WebPage; 35 import com.sun.webkit.graphics.WCGraphicsContext; 36 import com.sun.webkit.graphics.WCGraphicsManager; 37 import javafx.scene.Node; 38 39 public final class Printable extends Node { 40 static { 41 PrintableHelper.setPrintableAccessor(new PrintableHelper.PrintableAccessor() { 42 @Override 43 public NGNode doCreatePeer(Node node) { 44 return ((Printable) node).doCreatePeer(); 45 } 46 47 @Override 48 public BaseBounds doComputeGeomBounds(Node node, 49 BaseBounds bounds, BaseTransform tx) { 50 return ((Printable) node).doComputeGeomBounds(bounds, tx); 51 } 52 53 @Override 54 public boolean doComputeContains(Node node, double localX, double localY) { 55 return ((Printable) node).doComputeContains(localX, localY); 56 } 57 58 @Override 59 public Object doProcessMXNode(Node node, MXNodeAlgorithm alg, MXNodeAlgorithmContext ctx) { 60 return ((Printable) node).doProcessMXNode(alg, ctx); 61 } 62 }); 63 } 64 65 private final WebPage page; 66 private final NGNode peer; 67 68 public Printable(WebPage page, int pageIndex, float width) { 69 this.page = page; 70 peer = new Peer(pageIndex, width); 71 PrintableHelper.initHelper(this); 72 } 73 74 private NGNode doCreatePeer() { 75 return peer; 76 } 77 78 /* 79 * Note: This method MUST only be called via its accessor method. 80 */ 81 private Object doProcessMXNode(MXNodeAlgorithm alg, MXNodeAlgorithmContext ctx) { 82 return null; 83 } 84 85 /* 86 * Note: This method MUST only be called via its accessor method. 87 */ 88 private BaseBounds doComputeGeomBounds(BaseBounds bounds, BaseTransform tx) { 89 return bounds; 90 } 91 92 /* 93 * Note: This method MUST only be called via its accessor method. 94 */ 95 private boolean doComputeContains(double d, double d1) { 96 return false; 97 } 98 99 private final class Peer extends NGNode { 100 private final int pageIndex; 101 private final float width; 102 103 Peer(int pageIndex, float width) { 104 this.pageIndex = pageIndex; 105 this.width = width; 106 } 107 108 @Override protected void renderContent(Graphics g) { 109 WCGraphicsContext gc = WCGraphicsManager.getGraphicsManager(). 110 createGraphicsContext(g); 111 page.print(gc, pageIndex, width); 112 } 113 114 @Override protected boolean hasOverlappingContents() { 115 return false; |