Depth8Image.st
changeset 86 032006651226
parent 81 4ba554473294
child 89 ea2bf46eb669
equal deleted inserted replaced
85:32687feafcc1 86:032006651226
    19 
    19 
    20 Depth8Image comment:'
    20 Depth8Image comment:'
    21 COPYRIGHT (c) 1993 by Claus Gittinger
    21 COPYRIGHT (c) 1993 by Claus Gittinger
    22 	      All Rights Reserved
    22 	      All Rights Reserved
    23 
    23 
    24 $Header: /cvs/stx/stx/libview/Depth8Image.st,v 1.14 1994-11-17 14:29:13 claus Exp $
    24 $Header: /cvs/stx/stx/libview/Depth8Image.st,v 1.15 1994-11-28 21:00:47 claus Exp $
    25 '!
    25 '!
    26 
    26 
    27 !Depth8Image class methodsFor:'documentation'!
    27 !Depth8Image class methodsFor:'documentation'!
    28 
    28 
    29 copyright
    29 copyright
    40 "
    40 "
    41 !
    41 !
    42 
    42 
    43 version
    43 version
    44 "
    44 "
    45 $Header: /cvs/stx/stx/libview/Depth8Image.st,v 1.14 1994-11-17 14:29:13 claus Exp $
    45 $Header: /cvs/stx/stx/libview/Depth8Image.st,v 1.15 1994-11-28 21:00:47 claus Exp $
    46 "
    46 "
    47 !
    47 !
    48 
    48 
    49 documentation
    49 documentation
    50 "
    50 "
   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 .