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
5 this.swingJStype = 'L';
\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
13 }, "java.awt.image.LookupTable,java.awt.RenderingHints");
\r
14 Clazz.defineMethod (c$, "getTable",
\r
18 Clazz.defineMethod (c$, "filter",
\r
19 function (src, dst) {
\r
20 var srcCM = src.getColorModel ();
\r
21 var numBands = srcCM.getNumColorComponents ();
\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
29 dst = this.createCompatibleDestImage (src, null);
\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
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
60 dstRaster = dstRaster.createWritableChild (minx, miny, dstRaster.getWidth (), dstRaster.getHeight (), minx, miny, bands);
\r
61 }}this.filter (srcRaster, dstRaster);
\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
81 }if (Clazz.instanceOf (this.ltable, java.awt.image.ByteLookupTable)) {
\r
82 this.byteFilter (this.ltable, src, dst, width, height, numBands);
\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
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
98 }, "java.awt.image.Raster,java.awt.image.WritableRaster");
\r
99 Clazz.defineMethod (c$, "getBounds2D",
\r
101 return this.getBounds2D (src.getRaster ());
\r
102 }, "java.awt.image.BufferedImage");
\r
103 Clazz.defineMethod (c$, "getBounds2D",
\r
105 return src.getBounds ();
\r
106 }, "java.awt.image.Raster");
\r
107 Clazz.overrideMethod (c$, "createCompatibleDestImage",
\r
108 function (src, destCM) {
\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
116 image = new java.awt.image.BufferedImage (destCM, destCM.createCompatibleWritableRaster (w, h), destCM.isAlphaPremultiplied (), null);
\r
118 }, "java.awt.image.BufferedImage,java.awt.image.ColorModel");
\r
119 Clazz.overrideMethod (c$, "createCompatibleDestRaster",
\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
129 }, "java.awt.geom.Point2D,java.awt.geom.Point2D");
\r
130 Clazz.overrideMethod (c$, "getRenderingHints",
\r
134 Clazz.defineMethod (c$, "byteFilter",
\r
135 function (lookup, src, dst, width, height, numBands) {
\r
137 var table = lookup.getTable ();
\r
138 var offset = lookup.getOffset ();
\r
141 if (table.length == 1) {
\r
146 var len = table[0].length;
\r
147 for (y = 0; y < height; y++) {
\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
157 dst.setSamples (0, y, width, 1, band, srcPix);
\r
160 }, "java.awt.image.ByteLookupTable,java.awt.image.Raster,java.awt.image.WritableRaster,~N,~N,~N");
\r