JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / java / awt / image / LookupOp.js
1 Clazz.declarePackage ("java.awt.image");\r
2 Clazz.load (["java.awt.image.BufferedImageOp", "$.RasterOp"], "java.awt.image.LookupOp", ["java.lang.IllegalArgumentException", "java.awt.geom.Point2D", "java.awt.image.BufferedImage", "$.ByteLookupTable", "$.ImagingOpException", "jssun.awt.image.ImagingLib"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.ltable = null;\r
5 this.swingJStype = 'L';\r
6 this.hints = null;\r
7 Clazz.instantialize (this, arguments);\r
8 }, java.awt.image, "LookupOp", null, [java.awt.image.BufferedImageOp, java.awt.image.RasterOp]);\r
9 Clazz.makeConstructor (c$, \r
10 function (lookup, hints) {\r
11 this.ltable = lookup;\r
12 this.hints = hints;\r
13 }, "java.awt.image.LookupTable,java.awt.RenderingHints");\r
14 Clazz.defineMethod (c$, "getTable", \r
15 function () {\r
16 return this.ltable;\r
17 });\r
18 Clazz.defineMethod (c$, "filter", \r
19 function (src, dst) {\r
20 var srcCM = src.getColorModel ();\r
21 var numBands = srcCM.getNumColorComponents ();\r
22 var dstCM;\r
23 var numComponents = this.ltable.getNumComponents ();\r
24 if (numComponents != 1 && numComponents != srcCM.getNumComponents () && numComponents != srcCM.getNumColorComponents ()) {\r
25 throw  new IllegalArgumentException ("Number of arrays in the  lookup table (" + numComponents + " is not compatible with the " + " src image: " + src);\r
26 }var width = src.getWidth ();\r
27 var height = src.getHeight ();\r
28 if (dst == null) {\r
29 dst = this.createCompatibleDestImage (src, null);\r
30 dstCM = srcCM;\r
31 } else {\r
32 if (width != dst.getWidth ()) {\r
33 throw  new IllegalArgumentException ("Src width (" + width + ") not equal to dst width (" + dst.getWidth () + ")");\r
34 }if (height != dst.getHeight ()) {\r
35 throw  new IllegalArgumentException ("Src height (" + height + ") not equal to dst height (" + dst.getHeight () + ")");\r
36 }dstCM = dst.getColorModel ();\r
37 if (srcCM.getColorSpace ().getType () != dstCM.getColorSpace ().getType ()) {\r
38 throw  new java.awt.image.ImagingOpException ("SwingJS: Only RGB color space is supported");\r
39 }}var origDst = dst;\r
40 var srcRaster = src.getRaster ();\r
41 var dstRaster = dst.getRaster ();\r
42 if (srcCM.hasAlpha ()) {\r
43 if (numBands - 1 == numComponents || numComponents == 1) {\r
44 var minx = srcRaster.getMinX ();\r
45 var miny = srcRaster.getMinY ();\r
46 var bands =  Clazz.newIntArray (numBands - 1, 0);\r
47 for (var i = 0; i < numBands - 1; i++) {\r
48 bands[i] = i;\r
49 }\r
50 srcRaster = srcRaster.createWritableChild (minx, miny, srcRaster.getWidth (), srcRaster.getHeight (), minx, miny, bands);\r
51 }}if (dstCM.hasAlpha ()) {\r
52 var dstNumBands = dstRaster.getNumBands ();\r
53 if (dstNumBands - 1 == numComponents || numComponents == 1) {\r
54 var minx = dstRaster.getMinX ();\r
55 var miny = dstRaster.getMinY ();\r
56 var bands =  Clazz.newIntArray (numBands - 1, 0);\r
57 for (var i = 0; i < numBands - 1; i++) {\r
58 bands[i] = i;\r
59 }\r
60 dstRaster = dstRaster.createWritableChild (minx, miny, dstRaster.getWidth (), dstRaster.getHeight (), minx, miny, bands);\r
61 }}this.filter (srcRaster, dstRaster);\r
62 return origDst;\r
63 }, "java.awt.image.BufferedImage,java.awt.image.BufferedImage");\r
64 Clazz.defineMethod (c$, "filter", \r
65 function (src, dst) {\r
66 var numBands = src.getNumBands ();\r
67 var dstLength = dst.getNumBands ();\r
68 var height = src.getHeight ();\r
69 var width = src.getWidth ();\r
70 var srcPix =  Clazz.newIntArray (numBands, 0);\r
71 if (height != dst.getHeight () || width != dst.getWidth ()) {\r
72 throw  new IllegalArgumentException ("Width or height of Rasters do not match");\r
73 }dstLength = dst.getNumBands ();\r
74 if (numBands != dstLength) {\r
75 throw  new IllegalArgumentException ("Number of channels in the src (" + numBands + ") does not match number of channels" + " in the destination (" + dstLength + ")");\r
76 }var numComponents = this.ltable.getNumComponents ();\r
77 if (numComponents != 1 && numComponents != src.getNumBands ()) {\r
78 throw  new IllegalArgumentException ("Number of arrays in the  lookup table (" + numComponents + " is not compatible with the " + " src Raster: " + src);\r
79 }if (jssun.awt.image.ImagingLib.filter (this, src, dst) != null) {\r
80 return dst;\r
81 }if (Clazz.instanceOf (this.ltable, java.awt.image.ByteLookupTable)) {\r
82 this.byteFilter (this.ltable, src, dst, width, height, numBands);\r
83 } else {\r
84 var sminX = src.getMinX ();\r
85 var sY = src.getMinY ();\r
86 var dminX = dst.getMinX ();\r
87 var dY = dst.getMinY ();\r
88 for (var y = 0; y < height; y++, sY++, dY++) {\r
89 var sX = sminX;\r
90 var dX = dminX;\r
91 for (var x = 0; x < width; x++, sX++, dX++) {\r
92 src.getPixel (sX, sY, srcPix);\r
93 this.ltable.lookupPixel (srcPix, srcPix);\r
94 dst.setPixel (dX, dY, srcPix);\r
95 }\r
96 }\r
97 }return dst;\r
98 }, "java.awt.image.Raster,java.awt.image.WritableRaster");\r
99 Clazz.defineMethod (c$, "getBounds2D", \r
100 function (src) {\r
101 return this.getBounds2D (src.getRaster ());\r
102 }, "java.awt.image.BufferedImage");\r
103 Clazz.defineMethod (c$, "getBounds2D", \r
104 function (src) {\r
105 return src.getBounds ();\r
106 }, "java.awt.image.Raster");\r
107 Clazz.overrideMethod (c$, "createCompatibleDestImage", \r
108 function (src, destCM) {\r
109 var image;\r
110 var w = src.getWidth ();\r
111 var h = src.getHeight ();\r
112 if (destCM == null) {\r
113 var cm = src.getColorModel ();\r
114 image =  new java.awt.image.BufferedImage (cm, cm.createCompatibleWritableRaster (w, h), cm.isAlphaPremultiplied (), null);\r
115 } else {\r
116 image =  new java.awt.image.BufferedImage (destCM, destCM.createCompatibleWritableRaster (w, h), destCM.isAlphaPremultiplied (), null);\r
117 }return image;\r
118 }, "java.awt.image.BufferedImage,java.awt.image.ColorModel");\r
119 Clazz.overrideMethod (c$, "createCompatibleDestRaster", \r
120 function (src) {\r
121 return src.createCompatibleWritableRaster ();\r
122 }, "java.awt.image.Raster");\r
123 Clazz.overrideMethod (c$, "getPoint2D", \r
124 function (srcPt, dstPt) {\r
125 if (dstPt == null) {\r
126 dstPt =  new java.awt.geom.Point2D.Float ();\r
127 }dstPt.setLocation (srcPt.getX (), srcPt.getY ());\r
128 return dstPt;\r
129 }, "java.awt.geom.Point2D,java.awt.geom.Point2D");\r
130 Clazz.overrideMethod (c$, "getRenderingHints", \r
131 function () {\r
132 return this.hints;\r
133 });\r
134 Clazz.defineMethod (c$, "byteFilter", \r
135  function (lookup, src, dst, width, height, numBands) {\r
136 var srcPix = null;\r
137 var table = lookup.getTable ();\r
138 var offset = lookup.getOffset ();\r
139 var tidx;\r
140 var step = 1;\r
141 if (table.length == 1) {\r
142 step = 0;\r
143 }var x;\r
144 var y;\r
145 var band;\r
146 var len = table[0].length;\r
147 for (y = 0; y < height; y++) {\r
148 tidx = 0;\r
149 for (band = 0; band < numBands; band++, tidx += step) {\r
150 srcPix = src.getSamples (0, y, width, 1, band, srcPix);\r
151 for (x = 0; x < width; x++) {\r
152 var index = srcPix[x] - offset;\r
153 if (index < 0 || index > len) {\r
154 throw  new IllegalArgumentException ("index (" + index + "(out of range: " + " srcPix[" + x + "]=" + srcPix[x] + " offset=" + offset);\r
155 }srcPix[x] = table[tidx][index];\r
156 }\r
157 dst.setSamples (0, y, width, 1, band, srcPix);\r
158 }\r
159 }\r
160 }, "java.awt.image.ByteLookupTable,java.awt.image.Raster,java.awt.image.WritableRaster,~N,~N,~N");\r
161 });\r