JAL-1807 still testing
[jalviewjs.git] / bin / javajs / img / BMPDecoder.js
index c3b4dc7..b32016b 100644 (file)
-Clazz.declarePackage ("javajs.img");
-Clazz.load (null, "javajs.img.BMPDecoder", ["javajs.util.Rdr"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.bis = null;
-this.temp = null;
-Clazz.instantialize (this, arguments);
-}, javajs.img, "BMPDecoder");
-Clazz.makeConstructor (c$, 
-function () {
-});
-Clazz.defineMethod (c$, "decodeWindowsBMP", 
-function (bytes) {
-try {
-this.bis = javajs.util.Rdr.getBIS (bytes);
-this.temp =  Clazz.newByteArray (4, 0);
-if (this.readByte () != 66 || this.readByte () != 77) return null;
-this.readInt ();
-this.readShort ();
-this.readShort ();
-this.readInt ();
-var imageWidth;
-var imageHeight;
-var bitsPerPixel;
-var nColors = 0;
-var imageSize = 0;
-var headerSize = this.readInt ();
-switch (headerSize) {
-case 12:
-imageWidth = this.readShort ();
-imageHeight = this.readShort ();
-this.readShort ();
-bitsPerPixel = this.readShort ();
-break;
-case 40:
-imageWidth = this.readInt ();
-imageHeight = this.readInt ();
-this.readShort ();
-bitsPerPixel = this.readShort ();
-var ncompression = this.readInt ();
-if (ncompression != 0) {
-System.out.println ("BMP Compression is :" + ncompression + " -- aborting");
-return null;
-}imageSize = this.readInt ();
-this.readInt ();
-this.readInt ();
-nColors = this.readInt ();
-this.readInt ();
-break;
-default:
-System.out.println ("BMP Header unrecognized, length=" + headerSize + " -- aborting");
-return null;
-}
-var isYReversed = (imageHeight < 0);
-if (isYReversed) imageHeight = -imageHeight;
-var nPixels = imageHeight * imageWidth;
-var bytesPerPixel = Clazz.doubleToInt (bitsPerPixel / 8);
-nColors = (nColors > 0 ? nColors : 1 << bitsPerPixel);
-var npad = (bytesPerPixel == 4 ? 0 : imageSize == 0 ? 4 - (imageWidth % 4) : (Clazz.doubleToInt (imageSize / imageHeight)) - imageWidth * bytesPerPixel) % 4;
-var palette;
-var buf =  Clazz.newIntArray (nPixels, 0);
-var dpt = (isYReversed ? imageWidth : -imageWidth);
-var pt0 = (isYReversed ? 0 : nPixels + dpt);
-var pt1 = (isYReversed ? nPixels : dpt);
-switch (bitsPerPixel) {
-case 32:
-case 24:
-for (var pt = pt0; pt != pt1; pt += dpt, this.pad (npad)) for (var i = 0; i < imageWidth; i++) buf[pt + i] = this.readColor (bytesPerPixel);
-
-
-break;
-case 8:
-palette =  Clazz.newIntArray (nColors, 0);
-for (var i = 0; i < nColors; i++) palette[i] = this.readColor (4);
-
-for (var pt = pt0; pt != pt1; pt += dpt, this.pad (npad)) for (var i = 0; i < imageWidth; i++) buf[pt + i] = palette[this.readByte ()];
-
-
-break;
-case 4:
-npad = (4 - ((Clazz.doubleToInt ((imageWidth + 1) / 2)) % 4)) % 4;
-palette =  Clazz.newIntArray (nColors, 0);
-for (var i = 0; i < nColors; i++) palette[i] = this.readColor (4);
-
-var b4 = 0;
-for (var pt = pt0; pt != pt1; pt += dpt, this.pad (npad)) for (var i = 0, shift = 4; i < imageWidth; i++, shift = 4 - shift) buf[pt + i] = palette[((shift == 4 ? (b4 = this.readByte ()) : b4) >> shift) & 0xF];
-
-
-break;
-case 1:
-var color1 = this.readColor (3);
-var color2 = this.readColor (3);
-npad = (4 - ((Clazz.doubleToInt ((imageWidth + 7) / 8)) % 4)) % 4;
-var b = 0;
-for (var pt = pt0; pt != pt1; pt += dpt, this.pad (npad)) for (var i = 0, bpt = -1; i < imageWidth; i++, bpt--) {
-if (bpt < 0) {
-b = this.readByte ();
-bpt = 7;
-}buf[pt + i] = ((b & (1 << bpt)) == 0 ? color1 : color2);
-}
-
-break;
-case 64:
-case 2:
-default:
-System.out.println ("Not a 32-, 24-, 8-, 4-, or 1-bit Windows Bitmap, aborting...");
-return null;
-}
-return  Clazz.newArray (-1, [buf, Integer.$valueOf (imageWidth), Integer.$valueOf (imageHeight)]);
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-System.out.println ("Caught exception in loadbitmap!");
-} else {
-throw e;
-}
-}
-return null;
-}, "~A");
-Clazz.defineMethod (c$, "pad", 
-($fz = function (npad) {
-for (var i = 0; i < npad; i++) this.readByte ();
-
-return true;
-}, $fz.isPrivate = true, $fz), "~N");
-Clazz.defineMethod (c$, "readColor", 
-($fz = function (n) {
-this.bis.read (this.temp, 0, n);
-return -16777216 | ((this.temp[2] & 0xff) << 16) | ((this.temp[1] & 0xff) << 8) | this.temp[0] & 0xff;
-}, $fz.isPrivate = true, $fz), "~N");
-Clazz.defineMethod (c$, "readInt", 
-($fz = function () {
-this.bis.read (this.temp, 0, 4);
-return ((this.temp[3] & 0xff) << 24) | ((this.temp[2] & 0xff) << 16) | ((this.temp[1] & 0xff) << 8) | this.temp[0] & 0xff;
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "readShort", 
-($fz = function () {
-this.bis.read (this.temp, 0, 2);
-return ((this.temp[1] & 0xff) << 8) | this.temp[0] & 0xff;
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "readByte", 
-($fz = function () {
-this.bis.read (this.temp, 0, 1);
-return this.temp[0] & 0xff;
-}, $fz.isPrivate = true, $fz));
-});
+Clazz.declarePackage ("javajs.img");\r
+Clazz.load (null, "javajs.img.BMPDecoder", ["javajs.util.Rdr"], function () {\r
+c$ = Clazz.decorateAsClass (function () {\r
+this.bis = null;\r
+this.temp = null;\r
+Clazz.instantialize (this, arguments);\r
+}, javajs.img, "BMPDecoder");\r
+Clazz.makeConstructor (c$, \r
+function () {\r
+});\r
+Clazz.defineMethod (c$, "decodeWindowsBMP", \r
+function (bytes) {\r
+try {\r
+this.bis = javajs.util.Rdr.getBIS (bytes);\r
+this.temp =  Clazz.newByteArray (4, 0);\r
+if (this.readByte () != 66 || this.readByte () != 77) return null;\r
+this.readInt ();\r
+this.readShort ();\r
+this.readShort ();\r
+this.readInt ();\r
+var imageWidth;\r
+var imageHeight;\r
+var bitsPerPixel;\r
+var nColors = 0;\r
+var imageSize = 0;\r
+var headerSize = this.readInt ();\r
+switch (headerSize) {\r
+case 12:\r
+imageWidth = this.readShort ();\r
+imageHeight = this.readShort ();\r
+this.readShort ();\r
+bitsPerPixel = this.readShort ();\r
+break;\r
+case 40:\r
+imageWidth = this.readInt ();\r
+imageHeight = this.readInt ();\r
+this.readShort ();\r
+bitsPerPixel = this.readShort ();\r
+var ncompression = this.readInt ();\r
+if (ncompression != 0) {\r
+System.out.println ("BMP Compression is :" + ncompression + " -- aborting");\r
+return null;\r
+}imageSize = this.readInt ();\r
+this.readInt ();\r
+this.readInt ();\r
+nColors = this.readInt ();\r
+this.readInt ();\r
+break;\r
+default:\r
+System.out.println ("BMP Header unrecognized, length=" + headerSize + " -- aborting");\r
+return null;\r
+}\r
+var isYReversed = (imageHeight < 0);\r
+if (isYReversed) imageHeight = -imageHeight;\r
+var nPixels = imageHeight * imageWidth;\r
+var bytesPerPixel = Clazz.doubleToInt (bitsPerPixel / 8);\r
+nColors = (nColors > 0 ? nColors : 1 << bitsPerPixel);\r
+var npad = (bytesPerPixel == 4 ? 0 : imageSize == 0 ? 4 - (imageWidth % 4) : (Clazz.doubleToInt (imageSize / imageHeight)) - imageWidth * bytesPerPixel) % 4;\r
+var palette;\r
+var buf =  Clazz.newIntArray (nPixels, 0);\r
+var dpt = (isYReversed ? imageWidth : -imageWidth);\r
+var pt0 = (isYReversed ? 0 : nPixels + dpt);\r
+var pt1 = (isYReversed ? nPixels : dpt);\r
+switch (bitsPerPixel) {\r
+case 32:\r
+case 24:\r
+for (var pt = pt0; pt != pt1; pt += dpt, this.pad (npad)) for (var i = 0; i < imageWidth; i++) buf[pt + i] = this.readColor (bytesPerPixel);\r
+\r
+\r
+break;\r
+case 8:\r
+palette =  Clazz.newIntArray (nColors, 0);\r
+for (var i = 0; i < nColors; i++) palette[i] = this.readColor (4);\r
+\r
+for (var pt = pt0; pt != pt1; pt += dpt, this.pad (npad)) for (var i = 0; i < imageWidth; i++) buf[pt + i] = palette[this.readByte ()];\r
+\r
+\r
+break;\r
+case 4:\r
+npad = (4 - ((Clazz.doubleToInt ((imageWidth + 1) / 2)) % 4)) % 4;\r
+palette =  Clazz.newIntArray (nColors, 0);\r
+for (var i = 0; i < nColors; i++) palette[i] = this.readColor (4);\r
+\r
+var b4 = 0;\r
+for (var pt = pt0; pt != pt1; pt += dpt, this.pad (npad)) for (var i = 0, shift = 4; i < imageWidth; i++, shift = 4 - shift) buf[pt + i] = palette[((shift == 4 ? (b4 = this.readByte ()) : b4) >> shift) & 0xF];\r
+\r
+\r
+break;\r
+case 1:\r
+var color1 = this.readColor (3);\r
+var color2 = this.readColor (3);\r
+npad = (4 - ((Clazz.doubleToInt ((imageWidth + 7) / 8)) % 4)) % 4;\r
+var b = 0;\r
+for (var pt = pt0; pt != pt1; pt += dpt, this.pad (npad)) for (var i = 0, bpt = -1; i < imageWidth; i++, bpt--) {\r
+if (bpt < 0) {\r
+b = this.readByte ();\r
+bpt = 7;\r
+}buf[pt + i] = ((b & (1 << bpt)) == 0 ? color1 : color2);\r
+}\r
+\r
+break;\r
+case 64:\r
+case 2:\r
+default:\r
+System.out.println ("Not a 32-, 24-, 8-, 4-, or 1-bit Windows Bitmap, aborting...");\r
+return null;\r
+}\r
+return  Clazz.newArray (-1, [buf, Integer.$valueOf (imageWidth), Integer.$valueOf (imageHeight)]);\r
+} catch (e) {\r
+if (Clazz.exceptionOf (e, Exception)) {\r
+System.out.println ("Caught exception in loadbitmap!");\r
+} else {\r
+throw e;\r
+}\r
+}\r
+return null;\r
+}, "~A");\r
+Clazz.defineMethod (c$, "pad", \r
+($fz = function (npad) {\r
+for (var i = 0; i < npad; i++) this.readByte ();\r
+\r
+return true;\r
+}, $fz.isPrivate = true, $fz), "~N");\r
+Clazz.defineMethod (c$, "readColor", \r
+($fz = function (n) {\r
+this.bis.read (this.temp, 0, n);\r
+return -16777216 | ((this.temp[2] & 0xff) << 16) | ((this.temp[1] & 0xff) << 8) | this.temp[0] & 0xff;\r
+}, $fz.isPrivate = true, $fz), "~N");\r
+Clazz.defineMethod (c$, "readInt", \r
+($fz = function () {\r
+this.bis.read (this.temp, 0, 4);\r
+return ((this.temp[3] & 0xff) << 24) | ((this.temp[2] & 0xff) << 16) | ((this.temp[1] & 0xff) << 8) | this.temp[0] & 0xff;\r
+}, $fz.isPrivate = true, $fz));\r
+Clazz.defineMethod (c$, "readShort", \r
+($fz = function () {\r
+this.bis.read (this.temp, 0, 2);\r
+return ((this.temp[1] & 0xff) << 8) | this.temp[0] & 0xff;\r
+}, $fz.isPrivate = true, $fz));\r
+Clazz.defineMethod (c$, "readByte", \r
+($fz = function () {\r
+this.bis.read (this.temp, 0, 1);\r
+return this.temp[0] & 0xff;\r
+}, $fz.isPrivate = true, $fz));\r
+});\r