jdk/src/share/native/sun/java2d/loops/Ushort555Rgbx.h
changeset 2 90ce3da70b43
child 549 4273b1234967
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/native/sun/java2d/loops/Ushort555Rgbx.h	Sat Dec 01 00:00:00 2007 +0000
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2000-2002 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+#ifndef Ushort555Rgbx_h_Included
+#define Ushort555Rgbx_h_Included
+
+/*
+ * This file contains macro and type definitions used by the macros in
+ * LoopMacros.h to manipulate a surface of type "Ushort555Rgbx".
+ */
+
+typedef jushort Ushort555RgbxPixelType;
+typedef jushort Ushort555RgbxDataType;
+
+#define Ushort555RgbxPixelStride        2
+
+#define DeclareUshort555RgbxLoadVars(PREFIX)
+#define DeclareUshort555RgbxStoreVars(PREFIX)
+#define SetUshort555RgbxStoreVarsYPos(PREFIX, pRasInfo, y)
+#define SetUshort555RgbxStoreVarsXPos(PREFIX, pRasInfo, x)
+#define InitUshort555RgbxLoadVars(PREFIX, pRasInfo)
+#define InitUshort555RgbxStoreVarsY(PREFIX, pRasInfo)
+#define InitUshort555RgbxStoreVarsX(PREFIX, pRasInfo)
+#define NextUshort555RgbxStoreVarsX(PREFIX)
+#define NextUshort555RgbxStoreVarsY(PREFIX)
+#define DeclareUshort555RgbxPixelData(PREFIX)
+#define ExtractUshort555RgbxPixelData(PIXEL, PREFIX)
+
+#define Ushort555RgbxXparLutEntry               -1
+#define Ushort555RgbxIsXparLutEntry(pix)        (pix < 0)
+#define StoreUshort555RgbxNonXparFromArgb       StoreUshort555RgbxFrom1IntArgb
+
+
+#define IntArgbToUshort555Rgbx(rgb) \
+    (Ushort555RgbxPixelType)((((rgb) >> (16 + 3 - 11)) & 0xf800) | \
+                             (((rgb) >> ( 8 + 3 -  6)) & 0x07c0) | \
+                             (((rgb) >> ( 0 + 3 -  1)) & 0x003e))
+
+#define Ushort555RgbxPixelFromArgb(pixel, rgb, pRasInfo) \
+    (pixel) = IntArgbToUshort555Rgbx(rgb)
+
+#define StoreUshort555RgbxPixel(pRas, x, pixel) \
+    ((pRas)[x] = (jushort) (pixel))
+
+#define StoreUshort555RgbxPixelData(pPix, x, pixel, PREFIX) \
+    StoreUshort555RgbxPixel(pPix, x, pixel)
+
+
+#define LoadUshort555RgbxTo3ByteRgb(pRas, PREFIX, x, r, g, b) \
+    do { \
+        jushort pixel = (pRas)[x]; \
+        (r) = ((pixel) >> 11) & 0x1f; \
+        (r) = ((r) << 3) | ((r) >> 2); \
+        (g) = ((pixel) >>  6) & 0x1f; \
+        (g) = ((g) << 3) | ((g) >> 2); \
+        (b) = ((pixel) >>  1) & 0x1f; \
+        (b) = ((b) << 3) | ((b) >> 2); \
+    } while (0)
+
+#define LoadUshort555RgbxTo4ByteArgb(pRas, PREFIX, x, a, r, g, b) \
+    do { \
+        LoadUshort555RgbxTo3ByteRgb(pRas, PREFIX, x, r, g, b) \
+        (a) = 0xff; \
+    } while (0)
+
+#define StoreUshort555RgbxFrom1IntArgb(pRas, PREFIX, x, rgb) \
+    (pRas)[x] = IntArgbToUshort555Rgbx(rgb)
+
+#define StoreUshort555RgbxFrom1IntRgb(pRas, PREFIX, x, rgb) \
+    StoreUshort555RgbxFrom1IntArgb(pRas, PREFIX, x, rgb)
+
+#define StoreUshort555RgbxFrom3ByteRgb(pRas, PREFIX, x, r, g, b) \
+    (pRas)[x] = (jushort) ((((r) >> 3) << 11) | \
+                           (((g) >> 3) <<  6) | \
+                           (((b) >> 3) <<  1))
+
+#define StoreUshort555RgbxFrom4ByteArgb(pRas, PREFIX, x, a, r, g, b) \
+    StoreUshort555RgbxFrom3ByteRgb(pRas, PREFIX, x, r, g, b)
+
+#endif /* Ushort555Rgbx_h_Included */