Depth16Image.st
author Patrik Svestka <patrik.svestka@gmail.com>
Wed, 11 Jul 2018 16:58:29 +0200
branchjv
changeset 8426 e2051b1553f0
parent 7815 2e9d68bbeeb6
permissions -rw-r--r--
Issue #126: Removing hack, correctly calculating masDisplayBuffer and having fallback maxDisplayBuffer is set to 107 characters. On windows (7 and up) there is undocumented, you can't find this information anywhere, limit for raster size when using TextOutA or TextOutW. Experimentally, I have come to the conclusion that the limit is most likely set to 16384 points of the raster. To correctly calculate the maximum display buffer (maxDisplayBuffer) I have come to a formula: maxDisplayBuffer = 16384 / (maxWidth + tmet.tmOverhang); maxWidth is the maximum selected font width tmet.tmOverhang is the "extra width per string that may be added to some synthesized fonts." -> If you want to get the actual width you have to add it to maxWidth. You will get the whole extent then. (For most fonts tmOverhang will be 0.) The whole definition of tmOverhang from MSND - https://msdn.microsoft.com/en-us/library/windows/desktop/dd145132(v=vs.85).aspx
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
193
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
 COPYRIGHT (c) 1995 by Claus Gittinger
8426
e2051b1553f0 Issue #126: Removing hack, correctly calculating masDisplayBuffer and having fallback maxDisplayBuffer is set to 107 characters.
Patrik Svestka <patrik.svestka@gmail.com>
parents: 7815
diff changeset
     3
 COPYRIGHT (c) 2018 Patrik Svestka
193
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	      All Rights Reserved
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 This software is furnished under a license and may be used
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 only in accordance with the terms of that license and with the
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 inclusion of the above copyright notice.   This software may not
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 be provided or otherwise made available to, or used by, any
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 other person.  No title to or ownership of the software is
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
 hereby transferred.
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"
3263
bd92a12c9316 category changes
Claus Gittinger <cg@exept.de>
parents: 2180
diff changeset
    13
"{ Package: 'stx:libview' }"
bd92a12c9316 category changes
Claus Gittinger <cg@exept.de>
parents: 2180
diff changeset
    14
7190
Claus Gittinger <cg@exept.de>
parents: 6306
diff changeset
    15
"{ NameSpace: Smalltalk }"
Claus Gittinger <cg@exept.de>
parents: 6306
diff changeset
    16
193
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
Image subclass:#Depth16Image
579
e381761190c4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    18
	instanceVariableNames:''
e381761190c4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    19
	classVariableNames:''
e381761190c4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    20
	poolDictionaries:''
e381761190c4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    21
	category:'Graphics-Images'
193
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
!
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
!Depth16Image class methodsFor:'documentation'!
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
copyright
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
"
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
 COPYRIGHT (c) 1995 by Claus Gittinger
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
	      All Rights Reserved
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
 This software is furnished under a license and may be used
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 only in accordance with the terms of that license and with the
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 inclusion of the above copyright notice.   This software may not
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
 be provided or otherwise made available to, or used by, any
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
 other person.  No title to or ownership of the software is
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
 hereby transferred.
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
"
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
!
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
documentation
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
"
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    this class represents 16 bit images.
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    Only the minimum protocol is implemented here; much more is
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    needed for higher performance operations on depth16 images.
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    (however, 16bit images are seldom used, so falling back into the
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    slow general methods from Image should not hurt too much ..)
611
e0442439a3c6 documentation
Claus Gittinger <cg@exept.de>
parents: 579
diff changeset
    47
e0442439a3c6 documentation
Claus Gittinger <cg@exept.de>
parents: 579
diff changeset
    48
    [author:]
6066
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
    49
	Claus Gittinger
611
e0442439a3c6 documentation
Claus Gittinger <cg@exept.de>
parents: 579
diff changeset
    50
e0442439a3c6 documentation
Claus Gittinger <cg@exept.de>
parents: 579
diff changeset
    51
    [see also:]
6066
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
    52
	Depth1Image Depth2Image Depth4Image Depth8Image Depth24Image
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
    53
	ImageReader
193
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
"
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
! !
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
!Depth16Image class methodsFor:'queries'!
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
4759
55e8bc994d61 defaultPhotometric
Claus Gittinger <cg@exept.de>
parents: 3872
diff changeset
    59
defaultPhotometric
55e8bc994d61 defaultPhotometric
Claus Gittinger <cg@exept.de>
parents: 3872
diff changeset
    60
    "return the default photometric pixel interpretation"
55e8bc994d61 defaultPhotometric
Claus Gittinger <cg@exept.de>
parents: 3872
diff changeset
    61
55e8bc994d61 defaultPhotometric
Claus Gittinger <cg@exept.de>
parents: 3872
diff changeset
    62
    ^ #rgb
55e8bc994d61 defaultPhotometric
Claus Gittinger <cg@exept.de>
parents: 3872
diff changeset
    63
55e8bc994d61 defaultPhotometric
Claus Gittinger <cg@exept.de>
parents: 3872
diff changeset
    64
    "Created: / 27-05-2007 / 14:04:11 / cg"
55e8bc994d61 defaultPhotometric
Claus Gittinger <cg@exept.de>
parents: 3872
diff changeset
    65
!
55e8bc994d61 defaultPhotometric
Claus Gittinger <cg@exept.de>
parents: 3872
diff changeset
    66
193
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
imageDepth
579
e381761190c4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    68
    "return the depth of images represented by instances of
e381761190c4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    69
     this class - here we return 16"
e381761190c4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    70
193
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    ^ 16
579
e381761190c4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    72
e381761190c4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    73
    "Modified: 20.4.1996 / 23:40:01 / cg"
193
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
! !
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
3263
bd92a12c9316 category changes
Claus Gittinger <cg@exept.de>
parents: 2180
diff changeset
    76
!Depth16Image methodsFor:'accessing-pixels'!
281
4f04a56b1641 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
    77
1659
a38cf5be1aa8 pixel accessing methods cleaned up
Claus Gittinger <cg@exept.de>
parents: 813
diff changeset
    78
pixelAtX:x y:y
281
4f04a56b1641 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
    79
    "retrieve a pixel at x/y; return a pixelValue.
7520
c89730e74836 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7209
diff changeset
    80
     The interpretation of the returned value depends on the photometric
c89730e74836 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7209
diff changeset
    81
     and the colormap. See also Image>>atX:y:)
281
4f04a56b1641 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
    82
     Pixels start at x=0 , y=0 for upper left pixel, end at
4f04a56b1641 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
    83
     x = width-1, y=height-1 for lower right pixel"
4f04a56b1641 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
    84
4f04a56b1641 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
    85
    |lineIndex "{ Class: SmallInteger }"|
4f04a56b1641 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
    86
6306
a3bbe514829e class: Depth16Image
Claus Gittinger <cg@exept.de>
parents: 6066
diff changeset
    87
    pixelFunction notNil ifTrue:[^ pixelFunction value:x value:y].
a3bbe514829e class: Depth16Image
Claus Gittinger <cg@exept.de>
parents: 6066
diff changeset
    88
281
4f04a56b1641 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
    89
    lineIndex := (width * 2 * y) + 1.
4f04a56b1641 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
    90
7209
c4cb8c02e820 call the renamed basic methods for short access:
Claus Gittinger <cg@exept.de>
parents: 7190
diff changeset
    91
    ^ bytes unsignedInt16At:(lineIndex + (x * 2)) MSB:true.
1659
a38cf5be1aa8 pixel accessing methods cleaned up
Claus Gittinger <cg@exept.de>
parents: 813
diff changeset
    92
a38cf5be1aa8 pixel accessing methods cleaned up
Claus Gittinger <cg@exept.de>
parents: 813
diff changeset
    93
    "Created: 24.4.1997 / 16:06:19 / cg"
a38cf5be1aa8 pixel accessing methods cleaned up
Claus Gittinger <cg@exept.de>
parents: 813
diff changeset
    94
!
a38cf5be1aa8 pixel accessing methods cleaned up
Claus Gittinger <cg@exept.de>
parents: 813
diff changeset
    95
a38cf5be1aa8 pixel accessing methods cleaned up
Claus Gittinger <cg@exept.de>
parents: 813
diff changeset
    96
pixelAtX:x y:y put:aPixelValue
a38cf5be1aa8 pixel accessing methods cleaned up
Claus Gittinger <cg@exept.de>
parents: 813
diff changeset
    97
    "set the pixel at x/y to aPixelValue.
7520
c89730e74836 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7209
diff changeset
    98
     The interpretation of the pixelValue depends on the photometric
c89730e74836 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7209
diff changeset
    99
     and the colormap. (see also: Image>>atX:y:put:)
1659
a38cf5be1aa8 pixel accessing methods cleaned up
Claus Gittinger <cg@exept.de>
parents: 813
diff changeset
   100
     Pixels start at x=0 , y=0 for upper left pixel, end at
a38cf5be1aa8 pixel accessing methods cleaned up
Claus Gittinger <cg@exept.de>
parents: 813
diff changeset
   101
     x = width-1, y=height-1 for lower right pixel"
a38cf5be1aa8 pixel accessing methods cleaned up
Claus Gittinger <cg@exept.de>
parents: 813
diff changeset
   102
a38cf5be1aa8 pixel accessing methods cleaned up
Claus Gittinger <cg@exept.de>
parents: 813
diff changeset
   103
    |lineIndex "{ Class: SmallInteger }"|
a38cf5be1aa8 pixel accessing methods cleaned up
Claus Gittinger <cg@exept.de>
parents: 813
diff changeset
   104
a38cf5be1aa8 pixel accessing methods cleaned up
Claus Gittinger <cg@exept.de>
parents: 813
diff changeset
   105
    lineIndex := (width * 2 * y) + 1.
a38cf5be1aa8 pixel accessing methods cleaned up
Claus Gittinger <cg@exept.de>
parents: 813
diff changeset
   106
7209
c4cb8c02e820 call the renamed basic methods for short access:
Claus Gittinger <cg@exept.de>
parents: 7190
diff changeset
   107
    bytes unsignedInt16At:(lineIndex + (x * 2)) put:aPixelValue MSB:true
1659
a38cf5be1aa8 pixel accessing methods cleaned up
Claus Gittinger <cg@exept.de>
parents: 813
diff changeset
   108
a38cf5be1aa8 pixel accessing methods cleaned up
Claus Gittinger <cg@exept.de>
parents: 813
diff changeset
   109
    "Created: 24.4.1997 / 17:06:21 / cg"
2180
c6b09d67eb40 tuned rowAt:putAll
tz
parents: 1659
diff changeset
   110
!
c6b09d67eb40 tuned rowAt:putAll
tz
parents: 1659
diff changeset
   111
3872
390fabbc3036 comments and slight cleanup
Claus Gittinger <cg@exept.de>
parents: 3868
diff changeset
   112
rowAt:y putAll:pixelArray startingAt:startIndex
2180
c6b09d67eb40 tuned rowAt:putAll
tz
parents: 1659
diff changeset
   113
    "store a single rows bits from bits in the pixelArray argument;
c6b09d67eb40 tuned rowAt:putAll
tz
parents: 1659
diff changeset
   114
     Return the pixelArray.
3872
390fabbc3036 comments and slight cleanup
Claus Gittinger <cg@exept.de>
parents: 3868
diff changeset
   115
     Notice: row coordinate starts at 0."
2180
c6b09d67eb40 tuned rowAt:putAll
tz
parents: 1659
diff changeset
   116
c6b09d67eb40 tuned rowAt:putAll
tz
parents: 1659
diff changeset
   117
    |dstIdx "{ Class: SmallInteger }"
7190
Claus Gittinger <cg@exept.de>
parents: 6306
diff changeset
   118
     srcIdx "{ Class: SmallInteger }"
3866
c01473a90934 eliminated most references to bytes
Claus Gittinger <cg@exept.de>
parents: 3263
diff changeset
   119
     pixel
c01473a90934 eliminated most references to bytes
Claus Gittinger <cg@exept.de>
parents: 3263
diff changeset
   120
     bytes|
2180
c6b09d67eb40 tuned rowAt:putAll
tz
parents: 1659
diff changeset
   121
3866
c01473a90934 eliminated most references to bytes
Claus Gittinger <cg@exept.de>
parents: 3263
diff changeset
   122
    bytes := self bits.
3872
390fabbc3036 comments and slight cleanup
Claus Gittinger <cg@exept.de>
parents: 3868
diff changeset
   123
    dstIdx := (width * 2 * y) + 1.
7190
Claus Gittinger <cg@exept.de>
parents: 6306
diff changeset
   124
    srcIdx := startIndex.
2180
c6b09d67eb40 tuned rowAt:putAll
tz
parents: 1659
diff changeset
   125
    1 to:width do:[:col |
7190
Claus Gittinger <cg@exept.de>
parents: 6306
diff changeset
   126
        pixel := pixelArray at:srcIdx.
Claus Gittinger <cg@exept.de>
parents: 6306
diff changeset
   127
        "/ msbFirst
Claus Gittinger <cg@exept.de>
parents: 6306
diff changeset
   128
        bytes at:dstIdx put:((pixel bitShift:-8) bitAnd:16rFF).
Claus Gittinger <cg@exept.de>
parents: 6306
diff changeset
   129
        bytes at:dstIdx+1 put:(pixel bitAnd:16rFF).
Claus Gittinger <cg@exept.de>
parents: 6306
diff changeset
   130
        dstIdx := dstIdx + 2.
Claus Gittinger <cg@exept.de>
parents: 6306
diff changeset
   131
        srcIdx := srcIdx + 1.
2180
c6b09d67eb40 tuned rowAt:putAll
tz
parents: 1659
diff changeset
   132
    ].
c6b09d67eb40 tuned rowAt:putAll
tz
parents: 1659
diff changeset
   133
    ^ pixelArray
c6b09d67eb40 tuned rowAt:putAll
tz
parents: 1659
diff changeset
   134
c6b09d67eb40 tuned rowAt:putAll
tz
parents: 1659
diff changeset
   135
    "Created: 24.4.1997 / 15:50:27 / cg"
281
4f04a56b1641 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   136
! !
4f04a56b1641 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   137
4759
55e8bc994d61 defaultPhotometric
Claus Gittinger <cg@exept.de>
parents: 3872
diff changeset
   138
!Depth16Image methodsFor:'initialization'!
55e8bc994d61 defaultPhotometric
Claus Gittinger <cg@exept.de>
parents: 3872
diff changeset
   139
55e8bc994d61 defaultPhotometric
Claus Gittinger <cg@exept.de>
parents: 3872
diff changeset
   140
initialize
55e8bc994d61 defaultPhotometric
Claus Gittinger <cg@exept.de>
parents: 3872
diff changeset
   141
    super initialize.
6066
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   142
    samplesPerPixel := 3.
7815
2e9d68bbeeb6 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7520
diff changeset
   143
    bitsPerSample := #[5 5 5].
4759
55e8bc994d61 defaultPhotometric
Claus Gittinger <cg@exept.de>
parents: 3872
diff changeset
   144
55e8bc994d61 defaultPhotometric
Claus Gittinger <cg@exept.de>
parents: 3872
diff changeset
   145
    "Created: / 27-05-2007 / 14:09:46 / cg"
7815
2e9d68bbeeb6 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7520
diff changeset
   146
    "Modified: / 30-01-2017 / 18:24:16 / stefan"
4759
55e8bc994d61 defaultPhotometric
Claus Gittinger <cg@exept.de>
parents: 3872
diff changeset
   147
! !
55e8bc994d61 defaultPhotometric
Claus Gittinger <cg@exept.de>
parents: 3872
diff changeset
   148
5128
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   149
!Depth16Image methodsFor:'magnification'!
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   150
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   151
magnifyRowFrom:srcBytes offset:srcStart
6066
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   152
	  into:dstBytes offset:dstStart factor:mX
5128
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   153
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   154
    "magnify a single pixel row - can only magnify by integer factors"
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   155
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   156
%{
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   157
    unsigned char *srcP, *dstP;
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   158
    int _mag;
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   159
    REGISTER int i;
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   160
    REGISTER unsigned char byte1, byte2;
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   161
    int _pixels;
6066
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   162
    OBJ w = __INST(width);
5128
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   163
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   164
    if (__bothSmallInteger(srcStart, dstStart)
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   165
     && __bothSmallInteger(w, mX)
5477
8badcb37a2c0 __isByteArray() to __isByteArrayLike() in primitive code
Stefan Vogel <sv@exept.de>
parents: 5128
diff changeset
   166
     && __isByteArrayLike(srcBytes) && __isByteArray(dstBytes)) {
6066
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   167
	_mag = __intVal(mX);
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   168
	srcP = __ByteArrayInstPtr(srcBytes)->ba_element - 1 + __intVal(srcStart);
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   169
	dstP = __ByteArrayInstPtr(dstBytes)->ba_element - 1 + __intVal(dstStart);
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   170
	_pixels = __intVal(w);
5128
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   171
6066
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   172
	while (_pixels--) {
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   173
	    byte1 = *srcP;
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   174
	    byte2 = *(srcP+1);
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   175
	    srcP += 2;
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   176
	    for (i=_mag; i>0; i--) {
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   177
		*dstP = byte1;
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   178
		*(dstP+1) = byte2;
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   179
		dstP += 2;
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   180
	    }
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   181
	}
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   182
	RETURN (self);
5128
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   183
    }
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   184
%}.
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   185
    super
6066
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   186
	magnifyRowFrom:srcBytes offset:srcStart
62426e8110ae stx macros with 2 underlines
Claus Gittinger <cg@exept.de>
parents: 5477
diff changeset
   187
	into:dstBytes offset:dstStart factor:mX
5128
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   188
! !
6092105361d1 +magnifyRowFrom:offset:into:offset:factor:
Claus Gittinger <cg@exept.de>
parents: 4759
diff changeset
   189
193
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
!Depth16Image methodsFor:'queries'!
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
bitsPerPixel
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
    "return the number of bits per pixel"
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
    ^ 16
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
!
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
bitsPerRow
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
    "return the number of bits in one scanline of the image"
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
3868
e47cf114c824 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3866
diff changeset
   201
    ^ width * 16
193
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
!
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
bytesPerRow
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
    "return the number of bytes in one scanline of the image"
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
    ^ width * 2.
8426
e2051b1553f0 Issue #126: Removing hack, correctly calculating masDisplayBuffer and having fallback maxDisplayBuffer is set to 107 characters.
Patrik Svestka <patrik.svestka@gmail.com>
parents: 7815
diff changeset
   208
!
e2051b1553f0 Issue #126: Removing hack, correctly calculating masDisplayBuffer and having fallback maxDisplayBuffer is set to 107 characters.
Patrik Svestka <patrik.svestka@gmail.com>
parents: 7815
diff changeset
   209
e2051b1553f0 Issue #126: Removing hack, correctly calculating masDisplayBuffer and having fallback maxDisplayBuffer is set to 107 characters.
Patrik Svestka <patrik.svestka@gmail.com>
parents: 7815
diff changeset
   210
isDepth16Image
e2051b1553f0 Issue #126: Removing hack, correctly calculating masDisplayBuffer and having fallback maxDisplayBuffer is set to 107 characters.
Patrik Svestka <patrik.svestka@gmail.com>
parents: 7815
diff changeset
   211
    "return true if the image is instance of Depth16Image"
e2051b1553f0 Issue #126: Removing hack, correctly calculating masDisplayBuffer and having fallback maxDisplayBuffer is set to 107 characters.
Patrik Svestka <patrik.svestka@gmail.com>
parents: 7815
diff changeset
   212
   (self bitsPerPixel == 16) ifTrue:[^ true].  
e2051b1553f0 Issue #126: Removing hack, correctly calculating masDisplayBuffer and having fallback maxDisplayBuffer is set to 107 characters.
Patrik Svestka <patrik.svestka@gmail.com>
parents: 7815
diff changeset
   213
    ^ false
e2051b1553f0 Issue #126: Removing hack, correctly calculating masDisplayBuffer and having fallback maxDisplayBuffer is set to 107 characters.
Patrik Svestka <patrik.svestka@gmail.com>
parents: 7815
diff changeset
   214
e2051b1553f0 Issue #126: Removing hack, correctly calculating masDisplayBuffer and having fallback maxDisplayBuffer is set to 107 characters.
Patrik Svestka <patrik.svestka@gmail.com>
parents: 7815
diff changeset
   215
    "Created: / 16-04-2018 / 16:59:55 / svestkap"
193
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
! !
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
281
4f04a56b1641 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   218
!Depth16Image class methodsFor:'documentation'!
193
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
281
4f04a56b1641 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   220
version
7190
Claus Gittinger <cg@exept.de>
parents: 6306
diff changeset
   221
    ^ '$Header$'
5477
8badcb37a2c0 __isByteArray() to __isByteArrayLike() in primitive code
Stefan Vogel <sv@exept.de>
parents: 5128
diff changeset
   222
!
8badcb37a2c0 __isByteArray() to __isByteArrayLike() in primitive code
Stefan Vogel <sv@exept.de>
parents: 5128
diff changeset
   223
8badcb37a2c0 __isByteArray() to __isByteArrayLike() in primitive code
Stefan Vogel <sv@exept.de>
parents: 5128
diff changeset
   224
version_CVS
7190
Claus Gittinger <cg@exept.de>
parents: 6306
diff changeset
   225
    ^ '$Header$'
8426
e2051b1553f0 Issue #126: Removing hack, correctly calculating masDisplayBuffer and having fallback maxDisplayBuffer is set to 107 characters.
Patrik Svestka <patrik.svestka@gmail.com>
parents: 7815
diff changeset
   226
!
e2051b1553f0 Issue #126: Removing hack, correctly calculating masDisplayBuffer and having fallback maxDisplayBuffer is set to 107 characters.
Patrik Svestka <patrik.svestka@gmail.com>
parents: 7815
diff changeset
   227
e2051b1553f0 Issue #126: Removing hack, correctly calculating masDisplayBuffer and having fallback maxDisplayBuffer is set to 107 characters.
Patrik Svestka <patrik.svestka@gmail.com>
parents: 7815
diff changeset
   228
version_HG
e2051b1553f0 Issue #126: Removing hack, correctly calculating masDisplayBuffer and having fallback maxDisplayBuffer is set to 107 characters.
Patrik Svestka <patrik.svestka@gmail.com>
parents: 7815
diff changeset
   229
e2051b1553f0 Issue #126: Removing hack, correctly calculating masDisplayBuffer and having fallback maxDisplayBuffer is set to 107 characters.
Patrik Svestka <patrik.svestka@gmail.com>
parents: 7815
diff changeset
   230
    ^ '$Changeset: <not expanded> $'
193
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
! !
6306
a3bbe514829e class: Depth16Image
Claus Gittinger <cg@exept.de>
parents: 6066
diff changeset
   232