503 ]. |
503 ]. |
504 |
504 |
505 fast := false. |
505 fast := false. |
506 %{ |
506 %{ |
507 register unsigned char *srcPtr, *dstPtr, *mapPtr; |
507 register unsigned char *srcPtr, *dstPtr, *mapPtr; |
508 register _v, _bits, _bitCount; |
508 register __v, __bits, __bitCount; |
509 register j; |
509 register j; |
510 register i; |
510 register i; |
511 extern OBJ ByteArray; |
511 extern OBJ ByteArray; |
512 |
512 |
513 if (__isByteArray(_INST(bytes)) && __isByteArray(map) && __isByteArray(monoBits)) { |
513 if (__isByteArray(_INST(bytes)) && __isByteArray(map) && __isByteArray(monoBits)) { |
514 fast = true; |
514 fast = true; |
515 srcPtr = _ByteArrayInstPtr(_INST(bytes))->ba_element; |
515 srcPtr = _ByteArrayInstPtr(_INST(bytes))->ba_element; |
516 dstPtr = _ByteArrayInstPtr(monoBits)->ba_element; |
516 dstPtr = _ByteArrayInstPtr(monoBits)->ba_element; |
517 mapPtr = _ByteArrayInstPtr(map)->ba_element; |
517 mapPtr = _ByteArrayInstPtr(map)->ba_element; |
518 for (i=_intVal(h); i>0; i--) { |
518 for (i=_intVal(h); i>0; i--) { |
519 _bitCount = 0; |
519 __bitCount = 0; |
520 _bits = 0; |
520 __bits = 0; |
521 for (j=_intVal(w); j>0; j--) { |
521 for (j=_intVal(w); j>0; j--) { |
522 _v = mapPtr[*srcPtr++]; |
522 __v = mapPtr[*srcPtr++]; |
523 _bits = (_bits<<1) | _v; |
523 __bits = (__bits<<1) | __v; |
524 _bitCount++; |
524 __bitCount++; |
525 if (_bitCount == 8) { |
525 if (__bitCount == 8) { |
526 *dstPtr++ = _bits; |
526 *dstPtr++ = __bits; |
527 _bits = 0; |
527 __bits = 0; |
528 _bitCount = 0; |
528 __bitCount = 0; |
529 } |
529 } |
530 } |
530 } |
531 if (_bitCount != 0) { |
531 if (__bitCount != 0) { |
532 *dstPtr++ = _bits; |
532 *dstPtr++ = __bits; |
533 } |
533 } |
534 } |
534 } |
535 } |
535 } |
536 %} |
536 %} |
537 . |
537 . |
612 ] |
612 ] |
613 ]. |
613 ]. |
614 fast := false. |
614 fast := false. |
615 %{ |
615 %{ |
616 register unsigned char *srcPtr, *dstPtr, *mapPtr; |
616 register unsigned char *srcPtr, *dstPtr, *mapPtr; |
617 register _v, _bits, _bitCount; |
617 register __v, __bits, __bitCount; |
618 register j; |
618 register j; |
619 register i; |
619 register i; |
620 extern OBJ ByteArray; |
620 extern OBJ ByteArray; |
621 |
621 |
622 if ((__isByteArray(_INST(bytes))) && (__isByteArray(map)) && (__isByteArray(twoPlaneBits))) { |
622 if ((__isByteArray(_INST(bytes))) && (__isByteArray(map)) && (__isByteArray(twoPlaneBits))) { |
623 fast = true; |
623 fast = true; |
624 srcPtr = _ByteArrayInstPtr(_INST(bytes))->ba_element; |
624 srcPtr = _ByteArrayInstPtr(_INST(bytes))->ba_element; |
625 dstPtr = _ByteArrayInstPtr(twoPlaneBits)->ba_element; |
625 dstPtr = _ByteArrayInstPtr(twoPlaneBits)->ba_element; |
626 mapPtr = _ByteArrayInstPtr(map)->ba_element; |
626 mapPtr = _ByteArrayInstPtr(map)->ba_element; |
627 for (i=_intVal(h); i>0; i--) { |
627 for (i=_intVal(h); i>0; i--) { |
628 _bitCount = 0; |
628 __bitCount = 0; |
629 _bits = 0; |
629 __bits = 0; |
630 for (j=_intVal(w); j>0; j--) { |
630 for (j=_intVal(w); j>0; j--) { |
631 _v = mapPtr[*srcPtr++]; |
631 __v = mapPtr[*srcPtr++]; |
632 _bits = (_bits<<2) | _v; |
632 __bits = (__bits<<2) | __v; |
633 _bitCount++; |
633 __bitCount++; |
634 if (_bitCount == 4) { |
634 if (__bitCount == 4) { |
635 *dstPtr++ = _bits; |
635 *dstPtr++ = __bits; |
636 _bits = 0; |
636 __bits = 0; |
637 _bitCount = 0; |
637 __bitCount = 0; |
638 } |
638 } |
639 } |
639 } |
640 if (_bitCount != 0) { |
640 if (__bitCount != 0) { |
641 *dstPtr++ = _bits; |
641 *dstPtr++ = __bits; |
642 } |
642 } |
643 } |
643 } |
644 } |
644 } |
645 %} |
645 %} |
646 . |
646 . |