src/java.desktop/share/native/libmlib_image/mlib_ImageLookUp_Bit.c

Print this page


   1 /*
   2  * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


 242       *da++ = dd_array[*sa++];
 243       i += 8;
 244     }
 245 
 246     if (i < size) {
 247 
 248 #ifdef _NO_LONGLONG
 249 
 250       mlib_u32 emask;
 251       val0 = sa[0];
 252       val1 = p_dd[2*val0];
 253 
 254       if (i < (size - 4)) {
 255         ((mlib_u32*)da)[0] = val1;
 256         da = (TYPE_64BIT *) ((mlib_u8 *)da + 4);
 257         i += 4;
 258         val1 = p_dd[2*val0+1];
 259       }
 260 
 261 #ifdef _LITTLE_ENDIAN
 262       emask = (mlib_u32)((mlib_s32)(-1)) >> ((4 - (size - i)) * 8);
 263 #else
 264       emask = (mlib_s32)(-1) << ((4 - (size - i)) * 8);
 265 #endif /* _LITTLE_ENDIAN */
 266       ((mlib_u32*)da)[0] = (val1 & emask) | (((mlib_u32*)da)[0] &~ emask);
 267 
 268 #else /* _NO_LONGLONG */
 269 
 270 #ifdef _LITTLE_ENDIAN
 271       mlib_u64 emask = (mlib_u64)((mlib_s64)(-1)) >> ((8 - (size - i)) * 8);
 272 #else
 273       mlib_u64 emask = (mlib_s64)(-1) << ((8 - (size - i)) * 8);
 274 #endif /* _LITTLE_ENDIAN */
 275 
 276       ((mlib_u64*)da)[0] = (((mlib_u64*)dd_array)[sa[0]] & emask) | (((mlib_u64*)da)[0] &~ emask);
 277 
 278 #endif /* _NO_LONGLONG */
 279     }
 280 
 281     src += slb;
 282     dst += dlb;
 283   }
 284 
 285   if (buff != (mlib_u8*)buff_lcl) mlib_free(buff);
 286 
 287   return MLIB_SUCCESS;
 288 }
 289 
 290 /***************************************************************/
 291 mlib_status mlib_ImageLookUp_Bit_U8_2(const mlib_u8 *src,
 292                                       mlib_s32      slb,
 293                                       mlib_u8       *dst,


 378       dd1 = p_dd[2*(s0 >> 4)];
 379       dd2 = p_dd[2*(s0 >> 4)+1];
 380 
 381       if (i < (size - 8)) {
 382         ((mlib_u32*)da)[0] = dd1;
 383         ((mlib_u32*)da)[1] = dd2;
 384         da++;
 385         i += 8;
 386         dd1 = p_dd[2*(s0 & 0xf)];
 387         dd2 = p_dd[2*(s0 & 0xf)+1];
 388       }
 389 
 390       if (i < (size - 4)) {
 391         ((mlib_u32*)da)[0] = dd1;
 392         da = (DTYPE *) ((mlib_u8 *)da + 4);
 393         i += 4;
 394         dd1 = dd2;
 395       }
 396 
 397 #ifdef _LITTLE_ENDIAN
 398       emask = (mlib_u32)((mlib_s32)(-1)) >> ((4 - (size - i)) * 8);
 399 #else
 400       emask = (mlib_s32)(-1) << ((4 - (size - i)) * 8);
 401 #endif /* _LITTLE_ENDIAN */
 402       ((mlib_u32*)da)[0] = (dd1 & emask) | (((mlib_u32*)da)[0] &~ emask);
 403 
 404 #else /* _NO_LONGLONG */
 405 
 406       dd = ((mlib_u64*)dd_array)[s0 >> 4];
 407 
 408       if (i < (size - 8)) {
 409         ((mlib_u64*)da)[0] = dd;
 410         da++;
 411         i += 8;
 412         dd = ((mlib_u64*)dd_array)[s0 & 0xf];
 413       }
 414 
 415 #ifdef _LITTLE_ENDIAN
 416       emask = (mlib_u64)((mlib_s64)(-1)) >> ((8 - (size - i)) * 8);
 417 #else
 418       emask = (mlib_s64)(-1) << ((8 - (size - i)) * 8);
 419 #endif /* _LITTLE_ENDIAN */
 420       ((mlib_u64*)da)[0] = (dd & emask) | (((mlib_u64*)da)[0] &~ emask);
 421 
 422 #endif /* _NO_LONGLONG */
 423     }
 424 
 425     if (dp != dst) mlib_ImageCopy_na(dp, dst, size);
 426 
 427     src += slb;
 428     dst += dlb;
 429   }
 430 
 431   if (buff != (mlib_u8*)buff_lcl) mlib_free(buff);
 432 
 433   return MLIB_SUCCESS;
 434 }
 435 
 436 /***************************************************************/
 437 mlib_status mlib_ImageLookUp_Bit_U8_3(const mlib_u8 *src,
 438                                       mlib_s32      slb,


 548 
 549       if (i < (size - 4)) {
 550         *da++ = dd;
 551         i += 4;
 552         dd = ((mlib_u32*)(d_array01 + (s0 & 0xF)))[0];
 553       }
 554 
 555       if (i < (size - 4)) {
 556         *da++ = dd;
 557         i += 4;
 558         dd = ((mlib_u32*)(d_array12 + (s0 & 0xF)))[0];
 559       }
 560 
 561       if (i < (size - 4)) {
 562         *da++ = dd;
 563         i += 4;
 564         dd = ((mlib_u32*)(d_array12 + (s0 & 0xF)))[1];
 565       }
 566 
 567 #ifdef _LITTLE_ENDIAN
 568       emask = (mlib_u32)((mlib_s32)(-1)) >> ((4 - (size - i)) * 8);
 569 #else
 570       emask = (mlib_s32)(-1) << ((4 - (size - i)) * 8);
 571 #endif /* _LITTLE_ENDIAN */
 572       da[0] = (dd & emask) | (da[0] &~ emask);
 573     }
 574 
 575     if (dp != dst) mlib_ImageCopy_na(dp, dst, size);
 576 
 577     src += slb;
 578     dst += dlb;
 579   }
 580 
 581   if (buff != (mlib_u8*)buff_lcl) mlib_free(buff);
 582 
 583   return MLIB_SUCCESS;
 584 }
 585 
 586 /***************************************************************/
 587 mlib_status mlib_ImageLookUp_Bit_U8_4(const mlib_u8 *src,
 588                                       mlib_s32      slb,
 589                                       mlib_u8       *dst,
 590                                       mlib_s32      dlb,


   1 /*
   2  * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


 242       *da++ = dd_array[*sa++];
 243       i += 8;
 244     }
 245 
 246     if (i < size) {
 247 
 248 #ifdef _NO_LONGLONG
 249 
 250       mlib_u32 emask;
 251       val0 = sa[0];
 252       val1 = p_dd[2*val0];
 253 
 254       if (i < (size - 4)) {
 255         ((mlib_u32*)da)[0] = val1;
 256         da = (TYPE_64BIT *) ((mlib_u8 *)da + 4);
 257         i += 4;
 258         val1 = p_dd[2*val0+1];
 259       }
 260 
 261 #ifdef _LITTLE_ENDIAN
 262       emask = (~(mlib_u32)0) >> ((4 - (size - i)) * 8);
 263 #else
 264       emask = (~(mlib_u32)0) << ((4 - (size - i)) * 8);
 265 #endif /* _LITTLE_ENDIAN */
 266       ((mlib_u32*)da)[0] = (val1 & emask) | (((mlib_u32*)da)[0] &~ emask);
 267 
 268 #else /* _NO_LONGLONG */
 269 
 270 #ifdef _LITTLE_ENDIAN
 271       mlib_u64 emask = (~(mlib_u64)0) >> ((8 - (size - i)) * 8);
 272 #else
 273       mlib_u64 emask = (~(mlib_u64)0) << ((8 - (size - i)) * 8);
 274 #endif /* _LITTLE_ENDIAN */
 275 
 276       ((mlib_u64*)da)[0] = (((mlib_u64*)dd_array)[sa[0]] & emask) | (((mlib_u64*)da)[0] &~ emask);
 277 
 278 #endif /* _NO_LONGLONG */
 279     }
 280 
 281     src += slb;
 282     dst += dlb;
 283   }
 284 
 285   if (buff != (mlib_u8*)buff_lcl) mlib_free(buff);
 286 
 287   return MLIB_SUCCESS;
 288 }
 289 
 290 /***************************************************************/
 291 mlib_status mlib_ImageLookUp_Bit_U8_2(const mlib_u8 *src,
 292                                       mlib_s32      slb,
 293                                       mlib_u8       *dst,


 378       dd1 = p_dd[2*(s0 >> 4)];
 379       dd2 = p_dd[2*(s0 >> 4)+1];
 380 
 381       if (i < (size - 8)) {
 382         ((mlib_u32*)da)[0] = dd1;
 383         ((mlib_u32*)da)[1] = dd2;
 384         da++;
 385         i += 8;
 386         dd1 = p_dd[2*(s0 & 0xf)];
 387         dd2 = p_dd[2*(s0 & 0xf)+1];
 388       }
 389 
 390       if (i < (size - 4)) {
 391         ((mlib_u32*)da)[0] = dd1;
 392         da = (DTYPE *) ((mlib_u8 *)da + 4);
 393         i += 4;
 394         dd1 = dd2;
 395       }
 396 
 397 #ifdef _LITTLE_ENDIAN
 398       emask = (~(mlib_u32)0) >> ((4 - (size - i)) * 8);
 399 #else
 400       emask = (~(mlib_u32)0) << ((4 - (size - i)) * 8);
 401 #endif /* _LITTLE_ENDIAN */
 402       ((mlib_u32*)da)[0] = (dd1 & emask) | (((mlib_u32*)da)[0] &~ emask);
 403 
 404 #else /* _NO_LONGLONG */
 405 
 406       dd = ((mlib_u64*)dd_array)[s0 >> 4];
 407 
 408       if (i < (size - 8)) {
 409         ((mlib_u64*)da)[0] = dd;
 410         da++;
 411         i += 8;
 412         dd = ((mlib_u64*)dd_array)[s0 & 0xf];
 413       }
 414 
 415 #ifdef _LITTLE_ENDIAN
 416       emask = (~(mlib_u64)0) >> ((8 - (size - i)) * 8);
 417 #else
 418       emask = (~(mlib_u64)0) << ((8 - (size - i)) * 8);
 419 #endif /* _LITTLE_ENDIAN */
 420       ((mlib_u64*)da)[0] = (dd & emask) | (((mlib_u64*)da)[0] &~ emask);
 421 
 422 #endif /* _NO_LONGLONG */
 423     }
 424 
 425     if (dp != dst) mlib_ImageCopy_na(dp, dst, size);
 426 
 427     src += slb;
 428     dst += dlb;
 429   }
 430 
 431   if (buff != (mlib_u8*)buff_lcl) mlib_free(buff);
 432 
 433   return MLIB_SUCCESS;
 434 }
 435 
 436 /***************************************************************/
 437 mlib_status mlib_ImageLookUp_Bit_U8_3(const mlib_u8 *src,
 438                                       mlib_s32      slb,


 548 
 549       if (i < (size - 4)) {
 550         *da++ = dd;
 551         i += 4;
 552         dd = ((mlib_u32*)(d_array01 + (s0 & 0xF)))[0];
 553       }
 554 
 555       if (i < (size - 4)) {
 556         *da++ = dd;
 557         i += 4;
 558         dd = ((mlib_u32*)(d_array12 + (s0 & 0xF)))[0];
 559       }
 560 
 561       if (i < (size - 4)) {
 562         *da++ = dd;
 563         i += 4;
 564         dd = ((mlib_u32*)(d_array12 + (s0 & 0xF)))[1];
 565       }
 566 
 567 #ifdef _LITTLE_ENDIAN
 568       emask = (~(mlib_u32)0) >> ((4 - (size - i)) * 8);
 569 #else
 570       emask = (~(mlib_u32)0) << ((4 - (size - i)) * 8);
 571 #endif /* _LITTLE_ENDIAN */
 572       da[0] = (dd & emask) | (da[0] &~ emask);
 573     }
 574 
 575     if (dp != dst) mlib_ImageCopy_na(dp, dst, size);
 576 
 577     src += slb;
 578     dst += dlb;
 579   }
 580 
 581   if (buff != (mlib_u8*)buff_lcl) mlib_free(buff);
 582 
 583   return MLIB_SUCCESS;
 584 }
 585 
 586 /***************************************************************/
 587 mlib_status mlib_ImageLookUp_Bit_U8_4(const mlib_u8 *src,
 588                                       mlib_s32      slb,
 589                                       mlib_u8       *dst,
 590                                       mlib_s32      dlb,