JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / swingjs / JSGraphicsCompositor.js
1 Clazz.declarePackage ("swingjs");\r
2 Clazz.load (null, "swingjs.JSGraphicsCompositor", ["java.awt.image.BufferedImage", "$.ByteLookupTable", "jssun.awt.image.SunWritableRaster", "swingjs.JSToolkit"], function () {\r
3 c$ = Clazz.declareType (swingjs, "JSGraphicsCompositor");\r
4 Clazz.makeConstructor (c$, \r
5 function () {\r
6 });\r
7 Clazz.defineMethod (c$, "setGraphicsCompositeAlpha", \r
8 function (g, alphaRule) {\r
9 var s = null;\r
10 switch (alphaRule) {\r
11 default:\r
12 case 3:\r
13 s = "source-over";\r
14 break;\r
15 case 5:\r
16 s = "source-in";\r
17 break;\r
18 case 7:\r
19 s = "source-out";\r
20 break;\r
21 case 10:\r
22 s = "source-atop";\r
23 break;\r
24 case 12:\r
25 s = "xor";\r
26 break;\r
27 case 4:\r
28 s = "destination-over";\r
29 break;\r
30 case 6:\r
31 s = "destination-in";\r
32 break;\r
33 case 8:\r
34 s = "destination-out";\r
35 break;\r
36 case 11:\r
37 s = "destination-atop";\r
38 break;\r
39 }\r
40 {\r
41 g.ctx.globalCompositeOperation = s;\r
42 }return true;\r
43 }, "swingjs.JSGraphics2D,~N");\r
44 Clazz.defineMethod (c$, "drawImageOp", \r
45 function (g, img, op, x, y) {\r
46 var type = 0;\r
47 {\r
48 type = op.swingJStype;\r
49 }switch (type) {\r
50 case 'R':\r
51 var rop = op;\r
52 var offsets = rop.offsets;\r
53 var scaleFactors = rop.scaleFactors;\r
54 var canDo = (offsets.length == 4 && offsets[3] == 0);\r
55 if (canDo) for (var i = 0; i < 3; i++) if (offsets[i] != 0 || scaleFactors[i] != 1) {\r
56 canDo = false;\r
57 break;\r
58 }\r
59 if (canDo) {\r
60 g.setAlpha (scaleFactors[3]);\r
61 g.drawImage (img, x, y, null);\r
62 g.setAlpha (1);\r
63 return true;\r
64 }break;\r
65 case 'L':\r
66 break;\r
67 case 'A':\r
68 break;\r
69 case 'C':\r
70 break;\r
71 }\r
72 return false;\r
73 }, "swingjs.JSGraphics2D,java.awt.image.BufferedImage,java.awt.image.BufferedImageOp,~N,~N");\r
74 Clazz.defineMethod (c$, "filterRaster", \r
75 function (src, dst, op) {\r
76 swingjs.JSToolkit.notImplemented (null);\r
77 if (dst == null) {\r
78 dst = op.createCompatibleDestRaster (src);\r
79 }var retRaster = null;\r
80 var type = 0;\r
81 {\r
82 type = op.swingJStype;\r
83 }switch (type) {\r
84 case 'L':\r
85 var table = (op).getTable ();\r
86 if (Clazz.instanceOf (table, java.awt.image.ByteLookupTable)) {\r
87 var bt = table;\r
88 if (this.lookupByteRaster (src, dst, bt.getTable ()) > 0) {\r
89 retRaster = dst;\r
90 }}break;\r
91 case 'A':\r
92 var bOp = op;\r
93 var matrix =  Clazz.newDoubleArray (6, 0);\r
94 bOp.getTransform ().getMatrix (matrix);\r
95 if (this.transformRaster (src, dst, matrix, bOp.getInterpolationType ()) > 0) {\r
96 retRaster = dst;\r
97 }break;\r
98 case 'C':\r
99 var cOp = op;\r
100 if (this.convolveRaster (src, dst, cOp.getKernel (), cOp.getEdgeCondition ()) > 0) {\r
101 retRaster = dst;\r
102 }break;\r
103 default:\r
104 break;\r
105 }\r
106 if (retRaster != null) {\r
107 jssun.awt.image.SunWritableRaster.markDirty (retRaster);\r
108 }return retRaster;\r
109 }, "java.awt.image.Raster,java.awt.image.WritableRaster,java.awt.image.RasterOp");\r
110 Clazz.defineMethod (c$, "convolveRaster", \r
111  function (src, dst, kernel, edgeCondition) {\r
112 return 0;\r
113 }, "java.awt.image.Raster,java.awt.image.WritableRaster,java.awt.image.Kernel,~N");\r
114 Clazz.defineMethod (c$, "transformRaster", \r
115  function (src, dst, matrix, interpolationType) {\r
116 return 0;\r
117 }, "java.awt.image.Raster,java.awt.image.WritableRaster,~A,~N");\r
118 Clazz.defineMethod (c$, "lookupByteRaster", \r
119  function (src, dst, table) {\r
120 return 0;\r
121 }, "java.awt.image.Raster,java.awt.image.WritableRaster,~A");\r
122 Clazz.defineMethod (c$, "filterImage", \r
123 function (src, dst, op) {\r
124 swingjs.JSToolkit.notImplemented (null);\r
125 var retBI = null;\r
126 var type = 0;\r
127 {\r
128 type = op.swingJStype;\r
129 }switch (type) {\r
130 case 'L':\r
131 var table = (op).getTable ();\r
132 if (table.getOffset () != 0) {\r
133 return null;\r
134 }if (Clazz.instanceOf (table, java.awt.image.ByteLookupTable)) {\r
135 var bt = table;\r
136 if (this.lookupByteBI (src, dst, bt.getTable ()) > 0) {\r
137 retBI = dst;\r
138 }}break;\r
139 case 'A':\r
140 var bOp = op;\r
141 var matrix =  Clazz.newDoubleArray (6, 0);\r
142 var xform = bOp.getTransform ();\r
143 bOp.getTransform ().getMatrix (matrix);\r
144 if (this.transformBI (src, dst, matrix, bOp.getInterpolationType ()) > 0) {\r
145 retBI = dst;\r
146 }break;\r
147 case 'C':\r
148 var cOp = op;\r
149 if (this.convolveBI (src, dst, cOp.getKernel (), cOp.getEdgeCondition ()) > 0) {\r
150 retBI = dst;\r
151 }break;\r
152 default:\r
153 break;\r
154 }\r
155 return retBI;\r
156 }, "java.awt.image.BufferedImage,java.awt.image.BufferedImage,java.awt.image.BufferedImageOp");\r
157 Clazz.defineMethod (c$, "convolveBI", \r
158  function (src, dst, kernel, edgeCondition) {\r
159 return 0;\r
160 }, "java.awt.image.BufferedImage,java.awt.image.BufferedImage,java.awt.image.Kernel,~N");\r
161 Clazz.defineMethod (c$, "transformBI", \r
162  function (src, dst, matrix, interpolationType) {\r
163 return 0;\r
164 }, "java.awt.image.BufferedImage,java.awt.image.BufferedImage,~A,~N");\r
165 Clazz.defineMethod (c$, "lookupByteBI", \r
166  function (src, dst, table) {\r
167 return 0;\r
168 }, "java.awt.image.BufferedImage,java.awt.image.BufferedImage,~A");\r
169 Clazz.defineMethod (c$, "createImageNode", \r
170 function (img) {\r
171 var imgNode = null;\r
172 {\r
173 imgNode = img._imgNode;\r
174 }if (imgNode == null && Clazz.instanceOf (img, java.awt.image.BufferedImage)) {\r
175 {\r
176 var canvas = img._canvas;\r
177 if (canvas == null) {\r
178 img.getGraphics();\r
179 canvas = img._canvas;\r
180 }\r
181 imgNode = canvas;\r
182 imgNode.style.width = img.getWidth() + "px";\r
183 imgNode.style.height = img.getHeight()          + "px";\r
184 }return imgNode;\r
185 }return null;\r
186 }, "java.awt.Image");\r
187 });\r