home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1996-01-25 | 12.5 KB | [TEXT/CWIE] |
open in:
MacOS 8.1
|
Win98
|
DOS
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
You can browse this item here: ConvolveX.c
Confidence | Program | Detection | Match Type | Support
|
---|
66%
| dexvert
| Compact Compressed (Unix) (archive/compact)
| ext
| Supported |
10%
| dexvert
| MacBinary (archive/macBinary)
| fallback
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| MacBinary II, inited, Thu Jan 25 04:56:31 1996, modified Thu Jan 25 04:56:31 1996, creator 'CWIE', type ASCII, 11567 bytes "ConvolveX.c" , at 0x2daf 912 bytes resource
| default (weak)
| |
99%
| file
| data
| default
| |
74%
| TrID
| Macintosh plain text (MacBinary)
| default
| |
25%
| TrID
| MacBinary 2
| default (weak)
| |
100%
| siegfried
| fmt/1762 MacBinary (II)
| default
| |
100%
| lsar
| MacBinary
| default
|
|
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [CWIE] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 0b 43 6f 6e 76 6f 6c | 76 65 58 2e 63 00 00 00 |..Convol|veX.c...|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 43 57 49 | 45 01 00 00 00 00 00 00 |.TEXTCWI|E.......|
|00000050| 00 00 00 00 00 2d 2f 00 | 00 03 90 ad 2d 04 4f ad |.....-/.|....-.O.|
|00000060| 2d 04 4f 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |-.O.....|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 13 ec 00 00 |........|........|
|00000080| 2f 2a 20 0d 43 6f 6e 76 | 6f 6c 76 65 58 2f 59 2e |/* .Conv|olveX/Y.|
|00000090| 63 0d a9 20 31 39 38 39 | 2d 31 39 39 33 20 44 65 |c.. 1989|-1993 De|
|000000a0| 6e 69 73 20 47 2e 20 50 | 65 6c 6c 69 0d 53 69 6d |nis G. P|elli.Sim|
|000000b0| 70 6c 65 20 6f 6e 65 2d | 64 69 6d 65 6e 73 69 6f |ple one-|dimensio|
|000000c0| 6e 61 6c 20 63 6f 6e 76 | 6f 6c 75 74 69 6f 6e 2e |nal conv|olution.|
|000000d0| 20 43 6f 6e 76 6f 6c 76 | 65 20 69 6d 61 67 65 20 | Convolv|e image |
|000000e0| 69 6e 20 73 72 63 42 69 | 74 73 20 62 79 20 61 72 |in srcBi|ts by ar|
|000000f0| 72 61 79 20 66 5b 5d 20 | 74 6f 0d 70 72 6f 64 75 |ray f[] |to.produ|
|00000100| 63 65 20 69 6d 61 67 65 | 20 64 73 74 42 69 74 73 |ce image| dstBits|
|00000110| 2e 20 73 72 63 20 61 6e | 64 20 64 73 74 20 6d 61 |. src an|d dst ma|
|00000120| 79 20 68 61 76 65 20 61 | 6e 79 20 70 69 78 65 6c |y have a|ny pixel|
|00000130| 53 69 7a 65 2c 20 62 75 | 74 20 74 68 65 20 63 61 |Size, bu|t the ca|
|00000140| 6c 63 75 6c 61 74 69 6f | 6e 0d 69 74 73 65 6c 66 |lculatio|n.itself|
|00000150| 20 69 73 20 64 6f 6e 65 | 20 77 69 74 68 20 38 20 | is done| with 8 |
|00000160| 62 69 74 73 20 70 65 72 | 20 70 69 78 65 6c 2e 20 |bits per| pixel. |
|00000170| 41 73 73 75 6d 65 73 20 | 74 68 61 74 20 65 76 65 |Assumes |that eve|
|00000180| 72 79 74 68 69 6e 67 20 | 68 61 73 20 69 74 73 20 |rything |has its |
|00000190| 6f 72 69 67 69 6e 20 61 | 74 0d 69 74 73 20 63 65 |origin a|t.its ce|
|000001a0| 6e 74 65 72 2e 20 42 65 | 66 6f 72 65 20 63 61 6c |nter. Be|fore cal|
|000001b0| 6c 69 6e 67 20 43 6f 6e | 76 6f 6c 76 65 58 2f 59 |ling Con|volveX/Y|
|000001c0| 20 79 6f 75 20 73 68 6f | 75 6c 64 20 63 61 6c 6c | you sho|uld call|
|000001d0| 20 53 65 74 45 6e 74 72 | 69 65 73 28 29 20 74 6f | SetEntr|ies() to|
|000001e0| 20 73 65 74 20 75 70 0d | 74 68 65 20 63 6f 6c 6f | set up.|the colo|
|000001f0| 72 20 74 61 62 6c 65 73 | 20 61 70 70 72 6f 70 72 |r tables| appropr|
|00000200| 69 61 74 65 6c 79 20 28 | 75 6e 6c 65 73 73 20 73 |iately (|unless s|
|00000210| 6f 75 72 63 65 20 61 6e | 64 20 64 65 73 74 69 6e |ource an|d destin|
|00000220| 61 74 69 6f 6e 20 70 69 | 78 6d 61 70 73 20 61 72 |ation pi|xmaps ar|
|00000230| 65 20 62 6f 74 68 20 38 | 0d 62 69 74 73 2f 70 69 |e both 8|.bits/pi|
|00000240| 78 65 6c 2c 20 69 6e 20 | 77 68 69 63 68 20 63 61 |xel, in |which ca|
|00000250| 73 65 20 74 68 65 20 63 | 6f 6c 6f 72 20 74 61 62 |se the c|olor tab|
|00000260| 6c 65 73 20 61 72 65 20 | 69 67 6e 6f 72 65 64 29 |les are |ignored)|
|00000270| 2e 0d 0d 43 6f 6e 76 6f | 6c 76 65 58 2f 59 20 66 |...Convo|lveX/Y f|
|00000280| 69 6c 6c 73 20 65 61 63 | 68 20 70 69 78 65 6c 20 |ills eac|h pixel |
|00000290| 69 6e 20 74 68 65 20 64 | 65 73 74 69 6e 61 74 69 |in the d|estinati|
|000002a0| 6f 6e 20 77 69 74 68 20 | 61 20 77 65 69 67 68 74 |on with |a weight|
|000002b0| 65 64 20 73 75 6d 20 6f | 76 65 72 20 74 68 65 0d |ed sum o|ver the.|
|000002c0| 73 6f 75 72 63 65 2c 20 | 63 65 6e 74 65 72 65 64 |source, |centered|
|000002d0| 20 6f 6e 20 74 68 65 20 | 63 6f 72 72 65 73 70 6f | on the |correspo|
|000002e0| 6e 64 69 6e 67 20 70 69 | 78 65 6c 20 69 6e 20 74 |nding pi|xel in t|
|000002f0| 68 65 20 73 6f 75 72 63 | 65 2e 20 54 6f 20 61 76 |he sourc|e. To av|
|00000300| 6f 69 64 20 65 64 67 65 | 0d 65 66 66 65 63 74 73 |oid edge|.effects|
|00000310| 2c 20 69 74 20 6f 6e 6c | 79 20 63 6f 6d 70 75 74 |, it onl|y comput|
|00000320| 65 73 20 70 69 78 65 6c | 73 20 69 6e 20 74 68 65 |es pixel|s in the|
|00000330| 20 64 65 73 74 69 6e 61 | 74 69 6f 6e 20 77 68 69 | destina|tion whi|
|00000340| 63 68 20 68 61 76 65 20 | 66 75 6c 6c 20 73 75 70 |ch have |full sup|
|00000350| 70 6f 72 74 20 69 6e 0d | 74 68 65 20 73 6f 75 72 |port in.|the sour|
|00000360| 63 65 2e 20 49 66 20 6e | 65 63 65 73 73 61 72 79 |ce. If n|ecessary|
|00000370| 2c 20 43 6f 6e 76 6f 6c | 76 65 58 2f 59 20 77 69 |, Convol|veX/Y wi|
|00000380| 6c 6c 20 69 6e 73 65 74 | 20 74 68 65 20 73 6f 75 |ll inset| the sou|
|00000390| 72 63 65 20 6f 72 20 64 | 65 73 74 69 6e 61 74 69 |rce or d|estinati|
|000003a0| 6f 6e 20 72 65 63 74 2c | 0d 73 6f 20 74 68 61 74 |on rect,|.so that|
|000003b0| 20 74 68 65 20 64 65 73 | 74 69 6e 61 74 69 6f 6e | the des|tination|
|000003c0| 20 77 69 64 74 68 2f 68 | 65 69 67 68 74 20 70 6c | width/h|eight pl|
|000003d0| 75 73 20 74 68 65 20 61 | 72 72 61 79 20 6c 65 6e |us the a|rray len|
|000003e0| 67 74 68 20 65 71 75 61 | 6c 73 20 74 68 65 20 73 |gth equa|ls the s|
|000003f0| 6f 75 72 63 65 0d 77 69 | 64 74 68 2f 68 65 69 67 |ource.wi|dth/heig|
|00000400| 68 74 2e 0d 0d 49 74 20 | 77 6f 75 6c 64 20 62 65 |ht...It |would be|
|00000410| 20 6e 69 63 65 20 74 6f | 20 63 6f 6e 76 65 72 74 | nice to| convert|
|00000420| 20 74 68 69 73 20 74 6f | 20 75 73 65 20 47 65 74 | this to| use Get|
|00000430| 20 61 6e 64 20 53 65 74 | 50 69 78 65 6c 73 51 75 | and Set|PixelsQu|
|00000440| 69 63 6b 6c 79 20 69 6e | 73 74 65 61 64 20 6f 66 |ickly in|stead of|
|00000450| 0d 64 69 72 65 63 74 6c | 79 20 61 63 63 65 73 73 |.directl|y access|
|00000460| 69 6e 67 20 74 68 65 20 | 70 69 78 65 6c 73 2e 20 |ing the |pixels. |
|00000470| 54 68 69 73 20 77 6f 75 | 6c 64 20 69 6e 74 72 6f |This wou|ld intro|
|00000480| 64 75 63 65 20 61 20 73 | 6d 61 6c 6c 20 6f 76 65 |duce a s|mall ove|
|00000490| 72 68 65 61 64 2c 20 73 | 69 6e 63 65 20 74 68 65 |rhead, s|ince the|
|000004a0| 0d 6e 75 6d 62 65 72 73 | 20 77 6f 75 6c 64 20 62 |.numbers| would b|
|000004b0| 65 20 63 6f 70 69 65 64 | 20 69 6e 74 6f 20 61 20 |e copied| into a |
|000004c0| 6c 6f 6e 67 20 61 72 72 | 61 79 20 61 6e 64 20 66 |long arr|ay and f|
|000004d0| 72 6f 6d 20 74 68 65 6e | 63 65 20 69 6e 74 6f 20 |rom then|ce into |
|000004e0| 74 68 65 20 70 69 78 65 | 6c 73 2c 20 69 6e 73 74 |the pixe|ls, inst|
|000004f0| 65 61 64 0d 6f 66 20 62 | 65 69 6e 67 20 73 74 75 |ead.of b|eing stu|
|00000500| 66 66 65 64 20 64 69 72 | 65 63 74 6c 79 2c 20 62 |ffed dir|ectly, b|
|00000510| 75 74 20 77 6f 75 6c 64 | 20 70 72 6f 62 61 62 6c |ut would| probabl|
|00000520| 79 20 6d 61 6b 65 20 74 | 68 69 73 20 70 72 6f 67 |y make t|his prog|
|00000530| 72 61 6d 20 71 75 69 74 | 65 20 61 20 62 69 74 20 |ram quit|e a bit |
|00000540| 65 61 73 69 65 72 0d 74 | 6f 20 72 65 61 64 2e 0d |easier.t|o read..|
|00000550| 0d 42 55 47 53 3a 0d 53 | 65 74 74 69 6e 67 20 49 |.BUGS:.S|etting I|
|00000560| 4d 50 52 4f 56 45 44 5f | 52 4f 55 4e 44 49 4e 47 |MPROVED_|ROUNDING|
|00000570| 20 74 6f 20 74 72 75 65 | 20 69 6d 70 72 6f 76 65 | to true| improve|
|00000580| 73 20 72 65 73 75 6c 74 | 73 20 69 6e 20 73 6f 6d |s result|s in som|
|00000590| 65 20 61 70 70 6c 69 63 | 61 74 69 6f 6e 73 2c 20 |e applic|ations, |
|000005a0| 62 75 74 0d 73 63 72 65 | 77 73 20 75 70 20 6f 74 |but.scre|ws up ot|
|000005b0| 68 65 72 73 20 28 65 2e | 67 2e 20 74 68 65 20 64 |hers (e.|g. the d|
|000005c0| 65 6d 6f 20 46 69 6c 74 | 65 72 2e 63 29 2e 20 49 |emo Filt|er.c). I|
|000005d0| 20 64 6f 6e 27 74 20 68 | 61 76 65 20 74 69 6d 65 | don't h|ave time|
|000005e0| 20 74 6f 20 66 69 67 75 | 72 65 20 74 68 69 73 20 | to figu|re this |
|000005f0| 6f 75 74 20 61 74 20 0d | 74 68 65 20 6d 6f 6d 65 |out at .|the mome|
|00000600| 6e 74 2c 20 73 6f 20 49 | 27 6d 20 6c 65 61 76 69 |nt, so I|'m leavi|
|00000610| 6e 67 20 61 20 66 6c 61 | 67 20 74 68 61 74 20 63 |ng a fla|g that c|
|00000620| 61 6e 20 62 65 20 74 75 | 72 6e 65 64 20 6f 6e 20 |an be tu|rned on |
|00000630| 6f 72 20 6f 66 66 20 74 | 6f 20 73 75 69 74 20 79 |or off t|o suit y|
|00000640| 6f 75 72 20 0d 61 70 70 | 6c 69 63 61 74 69 6f 6e |our .app|lication|
|00000650| 2e 20 49 20 65 78 70 65 | 63 74 20 74 6f 20 66 69 |. I expe|ct to fi|
|00000660| 78 20 74 68 69 73 20 61 | 6e 64 20 65 6c 69 6d 69 |x this a|nd elimi|
|00000670| 6e 61 74 65 20 74 68 65 | 20 66 6c 61 67 20 69 6e |nate the| flag in|
|00000680| 20 74 68 65 20 66 75 74 | 75 72 65 2e 0d 0d 49 20 | the fut|ure...I |
|00000690| 74 68 69 6e 6b 20 69 74 | 20 6f 76 65 72 66 6c 6f |think it| overflo|
|000006a0| 77 73 20 69 66 20 79 6f | 75 20 74 72 79 20 74 6f |ws if yo|u try to|
|000006b0| 20 66 69 6c 74 65 72 20 | 31 36 20 6f 72 20 33 32 | filter |16 or 32|
|000006c0| 2d 62 69 74 20 64 65 65 | 70 20 69 6d 61 67 65 73 |-bit dee|p images|
|000006d0| 2e 20 0d 0d 48 49 53 54 | 4f 52 59 3a 0d 34 2f 31 |. ..HIST|ORY:.4/1|
|000006e0| 2f 38 39 20 64 67 70 09 | 74 77 69 63 65 20 61 73 |/89 dgp.|twice as|
|000006f0| 20 66 61 73 74 2c 20 74 | 68 61 6e 6b 73 20 74 6f | fast, t|hanks to|
|00000700| 20 72 65 63 6f 64 69 6e | 67 20 74 6f 20 75 73 65 | recodin|g to use|
|00000710| 20 6c 6f 6e 67 20 69 6e | 73 74 65 61 64 20 6f 66 | long in|stead of|
|00000720| 20 66 6c 6f 61 74 20 61 | 72 69 74 68 6d 65 74 69 | float a|rithmeti|
|00000730| 63 2e 0d 34 2f 32 2f 38 | 39 20 64 67 70 09 6d 61 |c..4/2/8|9 dgp.ma|
|00000740| 64 65 20 75 6e 69 76 65 | 72 73 61 6c 20 62 79 20 |de unive|rsal by |
|00000750| 75 73 69 6e 67 20 6c 69 | 6e 65 20 62 75 66 66 65 |using li|ne buffe|
|00000760| 72 73 20 66 6f 72 20 62 | 6f 74 68 20 73 72 63 20 |rs for b|oth src |
|00000770| 61 6e 64 20 64 73 74 2c | 20 61 6e 64 20 69 6e 74 |and dst,| and int|
|00000780| 65 72 66 61 63 69 6e 67 | 0d 09 09 09 74 6f 20 74 |erfacing|....to t|
|00000790| 68 65 20 73 72 63 20 61 | 6e 64 20 64 73 74 20 50 |he src a|nd dst P|
|000007a0| 69 78 4d 61 70 73 20 73 | 6f 6c 65 6c 79 20 74 68 |ixMaps s|olely th|
|000007b0| 72 6f 75 67 68 20 43 6f | 70 79 42 69 74 73 2e 0d |rough Co|pyBits..|
|000007c0| 34 2f 32 2f 38 39 20 64 | 67 70 09 43 6f 6e 76 6f |4/2/89 d|gp.Convo|
|000007d0| 6c 76 65 58 2f 59 2e 63 | 2c 20 61 20 70 72 65 2d |lveX/Y.c|, a pre-|
|000007e0| 70 72 6f 63 65 73 73 6f | 72 20 63 6f 6e 64 69 74 |processo|r condit|
|000007f0| 69 6f 6e 61 6c 20 77 61 | 73 20 61 64 64 65 64 20 |ional wa|s added |
|00000800| 74 6f 20 67 65 6e 65 72 | 61 74 65 20 43 6f 6e 76 |to gener|ate Conv|
|00000810| 6f 6c 76 65 58 0d 09 09 | 09 61 6e 64 20 43 6f 6e |olveX...|.and Con|
|00000820| 76 6f 6c 76 65 59 20 66 | 72 6f 6d 20 74 68 65 20 |volveY f|rom the |
|00000830| 53 41 4d 45 20 73 6f 75 | 72 63 65 2e 20 54 68 65 |SAME sou|rce. The|
|00000840| 20 74 77 6f 20 66 69 6c | 65 73 20 61 72 65 20 49 | two fil|es are I|
|00000850| 44 45 4e 54 49 43 41 4c | 20 65 78 63 65 70 74 0d |DENTICAL| except.|
|00000860| 09 09 09 66 6f 72 20 74 | 68 65 20 70 72 65 70 72 |...for t|he prepr|
|00000870| 6f 63 65 73 73 6f 72 20 | 64 65 66 69 6e 69 74 69 |ocessor |definiti|
|00000880| 6f 6e 20 6f 66 20 43 4f | 4e 56 4f 4c 56 45 5f 58 |on of CO|NVOLVE_X|
|00000890| 20 61 73 20 31 20 74 6f | 20 67 65 6e 65 72 61 74 | as 1 to| generat|
|000008a0| 65 20 43 6f 6e 76 6f 6c | 76 65 58 2c 0d 09 09 09 |e Convol|veX,....|
|000008b0| 6f 72 20 30 20 74 6f 20 | 67 65 6e 65 72 61 74 65 |or 0 to |generate|
|000008c0| 20 43 6f 6e 76 6f 6c 76 | 65 59 2e 0d 31 30 2f 39 | Convolv|eY..10/9|
|000008d0| 2f 38 39 20 64 67 70 09 | 46 69 78 65 64 20 6f 76 |/89 dgp.|Fixed ov|
|000008e0| 65 72 66 6c 6f 77 20 62 | 75 67 2e 20 53 70 65 65 |erflow b|ug. Spee|
|000008f0| 64 65 64 20 75 70 20 74 | 68 65 20 63 6f 6e 76 6f |ded up t|he convo|
|00000900| 6c 75 74 69 6f 6e 20 6c | 6f 6f 70 20 73 6c 69 67 |lution l|oop slig|
|00000910| 68 74 6c 79 2e 0d 09 09 | 09 41 64 64 65 64 20 63 |htly....|.Added c|
|00000920| 6f 6e 64 69 74 69 6f 6e | 61 6c 20 74 6f 20 75 73 |ondition|al to us|
|00000930| 65 20 43 6f 70 79 42 69 | 74 73 51 75 69 63 6b 6c |e CopyBi|tsQuickl|
|00000940| 79 20 69 6e 73 74 65 61 | 64 20 6f 66 20 43 6f 70 |y instea|d of Cop|
|00000950| 79 42 69 74 73 20 77 68 | 65 6e 20 73 6f 75 72 63 |yBits wh|en sourc|
|00000960| 65 20 61 6e 64 0d 09 09 | 09 64 65 73 74 69 6e 61 |e and...|.destina|
|00000970| 74 69 6f 6e 20 70 69 78 | 65 6c 53 69 7a 65 20 61 |tion pix|elSize a|
|00000980| 72 65 20 38 20 62 69 74 | 73 2e 20 54 68 69 73 20 |re 8 bit|s. This |
|00000990| 68 61 73 20 74 77 6f 20 | 76 69 72 74 75 65 73 2e |has two |virtues.|
|000009a0| 20 49 74 27 73 20 66 61 | 73 74 65 72 2c 20 61 6e | It's fa|ster, an|
|000009b0| 64 0d 09 09 09 69 74 20 | 62 79 70 61 73 73 65 73 |d....it |bypasses|
|000009c0| 20 74 68 65 20 43 6f 6c | 6f 72 20 4d 61 6e 61 67 | the Col|or Manag|
|000009d0| 65 72 27 73 20 74 72 61 | 6e 73 66 6f 72 6d 61 74 |er's tra|nsformat|
|000009e0| 69 6f 6e 73 20 74 68 72 | 6f 75 67 68 20 74 68 65 |ions thr|ough the|
|000009f0| 20 63 6f 6c 6f 72 20 61 | 6e 64 20 69 6e 76 65 72 | color a|nd inver|
|00000a00| 73 65 0d 09 09 09 63 6f | 6c 6f 72 20 74 61 62 6c |se....co|lor tabl|
|00000a10| 65 73 2c 20 77 68 69 63 | 68 20 63 6f 73 74 73 20 |es, whic|h costs |
|00000a20| 74 69 6d 65 20 61 6e 64 | 20 6c 6f 73 65 73 20 61 |time and| loses a|
|00000a30| 63 63 75 72 61 63 79 2e | 0d 31 30 2f 31 30 2f 38 |ccuracy.|.10/10/8|
|00000a40| 39 20 64 67 70 20 4e 6f | 77 20 75 73 65 20 52 65 |9 dgp No|w use Re|
|00000a50| 63 74 54 6f 41 64 64 72 | 65 73 73 20 74 6f 20 64 |ctToAddr|ess to d|
|00000a60| 65 74 65 72 6d 69 6e 65 | 20 74 68 65 20 70 69 78 |etermine| the pix|
|00000a70| 65 6c 53 69 7a 65 20 6f | 66 20 73 72 63 20 61 6e |elSize o|f src an|
|00000a80| 64 20 64 73 74 2c 20 74 | 6f 20 64 65 61 6c 0d 09 |d dst, t|o deal..|
|00000a90| 09 09 63 6f 72 72 65 63 | 74 6c 79 20 77 69 74 68 |..correc|tly with|
|00000aa0| 20 77 69 6e 64 6f 77 27 | 73 20 70 69 78 6d 61 70 | window'|s pixmap|
|00000ab0| 2e 0d 37 2f 32 35 2f 39 | 31 09 64 67 70 09 41 64 |..7/25/9|1.dgp.Ad|
|00000ac0| 64 65 64 20 65 78 70 6c | 69 63 69 74 20 70 72 65 |ded expl|icit pre|
|00000ad0| 70 72 6f 63 65 73 73 6f | 72 20 73 79 6d 62 6f 6c |processo|r symbol|
|00000ae0| 20 74 6f 20 74 75 72 6e | 20 64 69 61 67 6e 6f 73 | to turn| diagnos|
|00000af0| 74 69 63 20 70 72 69 6e | 74 6f 75 74 20 6f 6e 20 |tic prin|tout on |
|00000b00| 61 6e 64 20 6f 66 66 2e | 0d 38 2f 32 34 2f 39 31 |and off.|.8/24/91|
|00000b10| 09 64 67 70 09 4d 61 64 | 65 20 63 6f 6d 70 61 74 |.dgp.Mad|e compat|
|00000b20| 69 62 6c 65 20 77 69 74 | 68 20 54 48 49 4e 4b 20 |ible wit|h THINK |
|00000b30| 43 20 35 2e 30 2e 0d 38 | 2f 32 37 2f 39 32 09 64 |C 5.0..8|/27/92.d|
|00000b40| 67 70 09 41 64 64 65 64 | 20 47 65 73 74 61 6c 74 |gp.Added| Gestalt|
|00000b50| 28 29 2e 0d 31 31 2f 31 | 30 2f 39 32 20 64 67 70 |()..11/1|0/92 dgp|
|00000b60| 20 4e 6f 77 20 69 6e 69 | 74 69 61 6c 69 7a 65 20 | Now ini|tialize |
|00000b70| 61 6c 6c 20 66 69 65 6c | 64 73 20 6f 66 20 70 69 |all fiel|ds of pi|
|00000b80| 78 6d 61 70 2c 20 65 73 | 70 65 63 69 61 6c 6c 79 |xmap, es|pecially|
|00000b90| 20 74 68 65 20 50 4d 56 | 65 72 73 69 6f 6e 2e 0d | the PMV|ersion..|
|00000ba0| 09 09 09 49 64 65 6e 74 | 69 66 79 20 61 6c 6c 20 |...Ident|ify all |
|00000bb0| 65 72 72 6f 72 20 6d 65 | 73 73 61 67 65 73 20 61 |error me|ssages a|
|00000bc0| 73 20 6f 72 69 67 69 6e | 61 74 69 6e 67 20 66 72 |s origin|ating fr|
|00000bd0| 6f 6d 20 68 65 72 65 3a | 20 43 6f 6e 76 6f 6c 76 |om here:| Convolv|
|00000be0| 65 58 2f 59 2e 0d 09 09 | 09 52 65 70 6c 61 63 65 |eX/Y....|.Replace|
|00000bf0| 64 20 63 6f 6d 70 69 6c | 65 2d 74 69 6d 65 20 63 |d compil|e-time c|
|00000c00| 6f 6e 64 69 74 69 6f 6e | 61 6c 20 62 79 20 61 20 |ondition|al by a |
|00000c10| 72 75 6e 2d 74 69 6d 65 | 20 63 6f 6e 64 69 74 69 |run-time| conditi|
|00000c20| 6f 6e 61 6c 2c 20 73 6f | 0d 09 09 09 74 68 61 74 |onal, so|....that|
|00000c30| 20 74 68 65 20 43 6f 6e | 76 6f 6c 76 65 59 2e 63 | the Con|volveY.c|
|00000c40| 20 66 69 6c 65 20 69 73 | 20 6e 6f 20 6c 6f 6e 67 | file is| no long|
|00000c50| 65 72 20 6e 65 65 64 65 | 64 2e 0d 31 2f 32 32 2f |er neede|d..1/22/|
|00000c60| 39 33 09 64 67 70 09 53 | 77 61 70 4d 4d 55 4d 6f |93.dgp.S|wapMMUMo|
|00000c70| 64 65 28 29 2e 0d 32 2f | 31 2f 39 33 09 64 67 70 |de()..2/|1/93.dgp|
|00000c80| 20 49 6d 70 72 6f 76 65 | 64 20 72 6f 75 6e 64 69 | Improve|d roundi|
|00000c90| 6e 67 2e 20 52 65 6d 6f | 76 65 64 20 63 61 6c 6c |ng. Remo|ved call|
|00000ca0| 73 20 74 6f 20 47 65 73 | 74 61 6c 74 2c 20 61 73 |s to Ges|talt, as|
|00000cb0| 20 75 6e 6e 65 63 65 73 | 73 61 72 79 20 6f 76 65 | unneces|sary ove|
|00000cc0| 72 68 65 61 64 2e 0d 32 | 2f 37 2f 39 33 09 64 67 |rhead..2|/7/93.dg|
|00000cd0| 70 09 49 6e 74 72 6f 64 | 75 63 65 64 20 73 77 69 |p.Introd|uced swi|
|00000ce0| 74 63 68 20 49 4d 50 52 | 4f 56 45 44 5f 52 4f 55 |tch IMPR|OVED_ROU|
|00000cf0| 4e 44 49 4e 47 20 74 6f | 20 64 69 73 61 62 6c 65 |NDING to| disable|
|00000d00| 20 72 6f 75 6e 64 69 6e | 67 20 66 6f 72 20 64 65 | roundin|g for de|
|00000d10| 62 75 67 67 69 6e 67 2e | 0d 32 2f 38 2f 39 33 09 |bugging.|.2/8/93.|
|00000d20| 64 67 70 20 46 69 78 65 | 64 20 6f 76 65 72 66 6c |dgp Fixe|d overfl|
|00000d30| 6f 77 20 70 72 6f 62 6c | 65 6d 20 63 61 75 73 65 |ow probl|em cause|
|00000d40| 64 20 62 79 20 74 68 65 | 20 6e 65 77 20 72 6f 75 |d by the| new rou|
|00000d50| 6e 64 69 6e 67 2e 0d 37 | 2f 39 2f 39 33 09 64 67 |nding..7|/9/93.dg|
|00000d60| 70 20 63 68 65 63 6b 20 | 66 6f 72 20 33 32 2d 62 |p check |for 32-b|
|00000d70| 69 74 20 61 64 64 72 65 | 73 73 69 6e 67 20 63 61 |it addre|ssing ca|
|00000d80| 70 61 62 69 6c 69 74 79 | 2e 0d 36 2f 31 38 2f 39 |pability|..6/18/9|
|00000d90| 34 09 64 67 70 09 63 61 | 6e 33 32 20 69 73 20 6e |4.dgp.ca|n32 is n|
|00000da0| 6f 77 20 63 6f 6d 70 75 | 74 65 64 20 62 79 20 63 |ow compu|ted by c|
|00000db0| 61 6c 6c 69 6e 67 20 54 | 72 61 70 41 76 61 69 6c |alling T|rapAvail|
|00000dc0| 61 62 6c 65 28 5f 53 77 | 61 70 4d 4d 55 4d 6f 64 |able(_Sw|apMMUMod|
|00000dd0| 65 29 2c 20 77 68 69 63 | 68 20 0d 09 09 09 72 65 |e), whic|h ....re|
|00000de0| 74 75 72 6e 73 20 74 68 | 65 20 63 6f 72 72 65 63 |turns th|e correc|
|00000df0| 74 20 61 6e 73 77 65 72 | 20 65 76 65 6e 20 6f 6e |t answer| even on|
|00000e00| 20 4d 61 63 73 20 77 69 | 74 68 20 64 69 72 74 79 | Macs wi|th dirty|
|00000e10| 20 52 4f 4d 73 2e 0d 35 | 2f 32 33 2f 39 35 20 64 | ROMs..5|/23/95 d|
|00000e20| 67 70 20 41 70 70 6c 65 | 20 63 68 61 6e 67 65 64 |gp Apple| changed|
|00000e30| 20 74 68 65 20 70 72 6f | 74 6f 74 79 70 65 20 69 | the pro|totype i|
|00000e40| 6e 20 74 68 65 20 68 65 | 61 64 65 72 20 66 69 6c |n the he|ader fil|
|00000e50| 65 20 66 72 6f 6d 20 53 | 77 61 70 4d 4d 55 4d 6f |e from S|wapMMUMo|
|00000e60| 64 65 28 63 68 61 72 20 | 2a 29 20 74 6f 20 0d 09 |de(char |*) to ..|
|00000e70| 09 09 53 77 61 70 4d 4d | 55 4d 6f 64 65 28 73 69 |..SwapMM|UMode(si|
|00000e80| 67 6e 65 64 20 63 68 61 | 72 20 2a 29 2e 20 54 6f |gned cha|r *). To|
|00000e90| 20 72 65 74 61 69 6e 20 | 63 6f 6d 70 61 74 69 62 | retain |compatib|
|00000ea0| 69 6c 69 74 79 20 77 69 | 74 68 20 62 6f 74 68 20 |ility wi|th both |
|00000eb0| 6f 6c 64 20 61 6e 64 20 | 6e 65 77 0d 09 09 09 68 |old and |new....h|
|00000ec0| 65 61 64 65 72 73 2c 20 | 49 20 63 61 73 74 20 74 |eaders, |I cast t|
|00000ed0| 68 65 20 61 72 67 75 6d | 65 6e 74 20 28 76 6f 69 |he argum|ent (voi|
|00000ee0| 64 20 2a 29 2e 0d 2a 2f | 0d 23 69 6e 63 6c 75 64 |d *)..*/|.#includ|
|00000ef0| 65 20 22 56 69 64 65 6f | 54 6f 6f 6c 62 6f 78 2e |e "Video|Toolbox.|
|00000f00| 68 22 0d 23 69 66 6e 64 | 65 66 20 5f 5f 54 52 41 |h".#ifnd|ef __TRA|
|00000f10| 50 53 5f 5f 0d 09 23 69 | 6e 63 6c 75 64 65 20 3c |PS__..#i|nclude <|
|00000f20| 54 72 61 70 73 2e 68 3e | 09 09 2f 2f 20 5f 53 77 |Traps.h>|..// _Sw|
|00000f30| 61 70 4d 4d 55 4d 6f 64 | 65 0d 23 65 6e 64 69 66 |apMMUMod|e.#endif|
|00000f40| 0d 76 6f 69 64 20 43 6f | 6e 76 6f 6c 76 65 58 59 |.void Co|nvolveXY|
|00000f50| 28 64 6f 75 62 6c 65 20 | 66 5b 5d 2c 69 6e 74 20 |(double |f[],int |
|00000f60| 64 69 6d 2c 42 69 74 4d | 61 70 20 2a 73 72 63 42 |dim,BitM|ap *srcB|
|00000f70| 69 74 73 0d 09 2c 42 69 | 74 4d 61 70 20 2a 64 73 |its..,Bi|tMap *ds|
|00000f80| 74 42 69 74 73 2c 52 65 | 63 74 20 2a 73 72 63 52 |tBits,Re|ct *srcR|
|00000f90| 65 63 74 50 74 72 2c 52 | 65 63 74 20 2a 64 73 74 |ectPtr,R|ect *dst|
|00000fa0| 52 65 63 74 50 74 72 2c | 69 6e 74 20 63 6f 6e 76 |RectPtr,|int conv|
|00000fb0| 6f 6c 76 65 58 29 3b 0d | 23 64 65 66 69 6e 65 20 |olveX);.|#define |
|00000fc0| 44 49 41 47 4e 4f 53 54 | 49 43 53 20 30 09 09 2f |DIAGNOST|ICS 0../|
|00000fd0| 2f 20 74 72 75 65 20 6f | 72 20 66 61 6c 73 65 0d |/ true o|r false.|
|00000fe0| 23 64 65 66 69 6e 65 20 | 49 4d 50 52 4f 56 45 44 |#define |IMPROVED|
|00000ff0| 5f 52 4f 55 4e 44 49 4e | 47 20 31 09 2f 2f 20 74 |_ROUNDIN|G 1.// t|
|00001000| 72 75 65 20 6f 72 20 66 | 61 6c 73 65 0d 0d 76 6f |rue or f|alse..vo|
|00001010| 69 64 20 43 6f 6e 76 6f | 6c 76 65 58 28 64 6f 75 |id Convo|lveX(dou|
|00001020| 62 6c 65 20 66 5b 5d 2c | 69 6e 74 20 64 69 6d 2c |ble f[],|int dim,|
|00001030| 42 69 74 4d 61 70 20 2a | 73 72 63 42 69 74 73 0d |BitMap *|srcBits.|
|00001040| 09 2c 42 69 74 4d 61 70 | 20 2a 64 73 74 42 69 74 |.,BitMap| *dstBit|
|00001050| 73 2c 52 65 63 74 20 2a | 73 72 63 52 65 63 74 50 |s,Rect *|srcRectP|
|00001060| 74 72 2c 52 65 63 74 20 | 2a 64 73 74 52 65 63 74 |tr,Rect |*dstRect|
|00001070| 50 74 72 29 0d 7b 0d 09 | 43 6f 6e 76 6f 6c 76 65 |Ptr).{..|Convolve|
|00001080| 58 59 28 66 2c 64 69 6d | 2c 73 72 63 42 69 74 73 |XY(f,dim|,srcBits|
|00001090| 2c 64 73 74 42 69 74 73 | 2c 73 72 63 52 65 63 74 |,dstBits|,srcRect|
|000010a0| 50 74 72 2c 64 73 74 52 | 65 63 74 50 74 72 2c 31 |Ptr,dstR|ectPtr,1|
|000010b0| 29 3b 0d 7d 0d 0d 76 6f | 69 64 20 43 6f 6e 76 6f |);.}..vo|id Convo|
|000010c0| 6c 76 65 59 28 64 6f 75 | 62 6c 65 20 66 5b 5d 2c |lveY(dou|ble f[],|
|000010d0| 69 6e 74 20 64 69 6d 2c | 42 69 74 4d 61 70 20 2a |int dim,|BitMap *|
|000010e0| 73 72 63 42 69 74 73 0d | 09 2c 42 69 74 4d 61 70 |srcBits.|.,BitMap|
|000010f0| 20 2a 64 73 74 42 69 74 | 73 2c 52 65 63 74 20 2a | *dstBit|s,Rect *|
|00001100| 73 72 63 52 65 63 74 50 | 74 72 2c 52 65 63 74 20 |srcRectP|tr,Rect |
|00001110| 2a 64 73 74 52 65 63 74 | 50 74 72 29 0d 7b 0d 09 |*dstRect|Ptr).{..|
|00001120| 43 6f 6e 76 6f 6c 76 65 | 58 59 28 66 2c 64 69 6d |Convolve|XY(f,dim|
|00001130| 2c 73 72 63 42 69 74 73 | 2c 64 73 74 42 69 74 73 |,srcBits|,dstBits|
|00001140| 2c 73 72 63 52 65 63 74 | 50 74 72 2c 64 73 74 52 |,srcRect|Ptr,dstR|
|00001150| 65 63 74 50 74 72 2c 30 | 29 3b 0d 7d 0d 0d 76 6f |ectPtr,0|);.}..vo|
|00001160| 69 64 20 43 6f 6e 76 6f | 6c 76 65 58 59 28 64 6f |id Convo|lveXY(do|
|00001170| 75 62 6c 65 20 66 5b 5d | 2c 69 6e 74 20 64 69 6d |uble f[]|,int dim|
|00001180| 2c 42 69 74 4d 61 70 20 | 2a 73 72 63 42 69 74 73 |,BitMap |*srcBits|
|00001190| 0d 09 2c 42 69 74 4d 61 | 70 20 2a 64 73 74 42 69 |..,BitMa|p *dstBi|
|000011a0| 74 73 2c 52 65 63 74 20 | 2a 73 72 63 52 65 63 74 |ts,Rect |*srcRect|
|000011b0| 50 74 72 2c 52 65 63 74 | 20 2a 64 73 74 52 65 63 |Ptr,Rect| *dstRec|
|000011c0| 74 50 74 72 2c 69 6e 74 | 20 63 6f 6e 76 6f 6c 76 |tPtr,int| convolv|
|000011d0| 65 58 29 0d 7b 0d 09 52 | 65 63 74 20 6d 79 73 72 |eX).{..R|ect mysr|
|000011e0| 63 52 65 63 74 2c 6d 79 | 64 73 74 52 65 63 74 3b |cRect,my|dstRect;|
|000011f0| 0d 09 69 6e 74 20 64 73 | 74 4c 69 6e 65 73 2c 73 |..int ds|tLines,s|
|00001200| 72 63 4c 69 6e 65 73 2c | 64 73 74 4c 65 6e 67 74 |rcLines,|dstLengt|
|00001210| 68 2c 73 72 63 4c 65 6e | 67 74 68 3b 0d 09 69 6e |h,srcLen|gth;..in|
|00001220| 74 20 6c 69 6e 65 73 3b | 0d 09 75 6e 73 69 67 6e |t lines;|..unsign|
|00001230| 65 64 20 63 68 61 72 20 | 2a 64 73 74 50 74 72 3d |ed char |*dstPtr=|
|00001240| 4e 55 4c 4c 3b 0d 09 72 | 65 67 69 73 74 65 72 20 |NULL;..r|egister |
|00001250| 75 6e 73 69 67 6e 65 64 | 20 63 68 61 72 20 2a 73 |unsigned| char *s|
|00001260| 72 63 50 74 72 3d 4e 55 | 4c 4c 3b 0d 09 72 65 67 |rcPtr=NU|LL;..reg|
|00001270| 69 73 74 65 72 20 69 6e | 74 20 69 3b 0d 09 52 65 |ister in|t i;..Re|
|00001280| 63 74 20 64 73 74 52 65 | 63 74 2c 20 73 72 63 52 |ct dstRe|ct, srcR|
|00001290| 65 63 74 3b 0d 09 72 65 | 67 69 73 74 65 72 20 6c |ect;..re|gister l|
|000012a0| 6f 6e 67 20 74 3b 0d 09 | 72 65 67 69 73 74 65 72 |ong t;..|register|
|000012b0| 20 6c 6f 6e 67 20 2a 69 | 66 75 6e 2c 20 2a 66 50 | long *i|fun, *fP|
|000012c0| 74 72 3b 0d 09 6c 6f 6e | 67 20 69 66 75 6e 53 63 |tr;..lon|g ifunSc|
|000012d0| 61 6c 65 3b 0d 09 69 6e | 74 20 78 2c 79 2c 73 72 |ale;..in|t x,y,sr|
|000012e0| 63 78 2c 69 6d 69 6e 2c | 69 6d 61 78 3b 0d 09 64 |cx,imin,|imax;..d|
|000012f0| 6f 75 62 6c 65 20 74 6d | 61 78 3b 0d 09 50 69 78 |ouble tm|ax;..Pix|
|00001300| 4d 61 70 20 73 72 63 54 | 6d 70 2c 64 73 74 54 6d |Map srcT|mp,dstTm|
|00001310| 70 3b 09 2f 2a 20 6c 69 | 6e 65 20 62 75 66 66 65 |p;./* li|ne buffe|
|00001320| 72 73 20 2a 2f 0d 09 23 | 69 66 20 44 49 41 47 4e |rs */..#|if DIAGN|
|00001330| 4f 53 54 49 43 53 0d 09 | 09 47 44 48 61 6e 64 6c |OSTICS..|.GDHandl|
|00001340| 65 20 64 65 76 69 63 65 | 3d 4e 55 4c 4c 3b 0d 09 |e device|=NULL;..|
|00001350| 09 64 6f 75 62 6c 65 20 | 61 3b 0d 09 23 65 6e 64 |.double |a;..#end|
|00001360| 69 66 0d 09 73 68 6f 72 | 74 20 73 72 63 50 69 78 |if..shor|t srcPix|
|00001370| 65 6c 53 69 7a 65 2c 64 | 73 74 50 69 78 65 6c 53 |elSize,d|stPixelS|
|00001380| 69 7a 65 3b 0d 09 69 6e | 74 20 65 72 72 6f 72 3b |ize;..in|t error;|
|00001390| 0d 09 6c 6f 6e 67 20 76 | 61 6c 75 65 3b 0d 09 73 |..long v|alue;..s|
|000013a0| 69 67 6e 65 64 20 63 68 | 61 72 20 6d 6d 75 4d 6f |igned ch|ar mmuMo|
|000013b0| 64 65 3d 74 72 75 65 33 | 32 62 3b 0d 09 42 6f 6f |de=true3|2b;..Boo|
|000013c0| 6c 65 61 6e 20 63 61 6e | 33 32 3b 0d 09 0d 09 76 |lean can|32;....v|
|000013d0| 61 6c 75 65 3d 30 3b 0d | 09 65 72 72 6f 72 3d 47 |alue=0;.|.error=G|
|000013e0| 65 73 74 61 6c 74 28 67 | 65 73 74 61 6c 74 41 64 |estalt(g|estaltAd|
|000013f0| 64 72 65 73 73 69 6e 67 | 4d 6f 64 65 41 74 74 72 |dressing|ModeAttr|
|00001400| 2c 26 76 61 6c 75 65 29 | 3b 0d 09 63 61 6e 33 32 |,&value)|;..can32|
|00001410| 3d 54 72 61 70 41 76 61 | 69 6c 61 62 6c 65 28 5f |=TrapAva|ilable(_|
|00001420| 53 77 61 70 4d 4d 55 4d | 6f 64 65 29 3b 0d 09 52 |SwapMMUM|ode);..R|
|00001430| 65 63 74 54 6f 41 64 64 | 72 65 73 73 28 28 50 69 |ectToAdd|ress((Pi|
|00001440| 78 4d 61 70 20 2a 29 73 | 72 63 42 69 74 73 2c 73 |xMap *)s|rcBits,s|
|00001450| 72 63 52 65 63 74 50 74 | 72 2c 4e 55 4c 4c 2c 26 |rcRectPt|r,NULL,&|
|00001460| 73 72 63 50 69 78 65 6c | 53 69 7a 65 2c 4e 55 4c |srcPixel|Size,NUL|
|00001470| 4c 29 3b 0d 09 52 65 63 | 74 54 6f 41 64 64 72 65 |L);..Rec|tToAddre|
|00001480| 73 73 28 28 50 69 78 4d | 61 70 20 2a 29 64 73 74 |ss((PixM|ap *)dst|
|00001490| 42 69 74 73 2c 64 73 74 | 52 65 63 74 50 74 72 2c |Bits,dst|RectPtr,|
|000014a0| 4e 55 4c 4c 2c 26 64 73 | 74 50 69 78 65 6c 53 69 |NULL,&ds|tPixelSi|
|000014b0| 7a 65 2c 4e 55 4c 4c 29 | 3b 0d 09 69 66 75 6e 20 |ze,NULL)|;..ifun |
|000014c0| 3d 20 28 6c 6f 6e 67 20 | 2a 29 20 6d 61 6c 6c 6f |= (long |*) mallo|
|000014d0| 63 28 64 69 6d 2a 73 69 | 7a 65 6f 66 28 2a 69 66 |c(dim*si|zeof(*if|
|000014e0| 75 6e 29 29 3b 0d 09 69 | 66 28 69 66 75 6e 20 3d |un));..i|f(ifun =|
|000014f0| 3d 20 4e 55 4c 4c 29 20 | 7b 0d 09 09 50 72 69 6e |= NULL) |{...Prin|
|00001500| 74 66 45 78 69 74 28 22 | 43 6f 6e 76 6f 6c 76 65 |tfExit("|Convolve|
|00001510| 58 2f 59 3a 20 53 6f 72 | 72 79 2c 20 63 6f 75 6c |X/Y: Sor|ry, coul|
|00001520| 64 6e 27 74 20 61 6c 6c | 6f 63 61 74 65 20 65 6e |dn't all|ocate en|
|00001530| 6f 75 67 68 20 6d 65 6d | 6f 72 79 20 66 6f 72 20 |ough mem|ory for |
|00001540| 77 6f 72 6b 69 6e 67 20 | 61 72 72 61 79 5c 30 30 |working |array\00|
|00001550| 37 5c 6e 22 29 3b 0d 09 | 7d 0d 09 2f 2a 0d 09 57 |7\n");..|}../*..W|
|00001560| 65 20 77 69 6c 6c 20 73 | 75 6d 20 69 6e 20 61 20 |e will s|um in a |
|00001570| 6c 6f 6e 67 20 72 65 67 | 69 73 74 65 72 2e 0d 09 |long reg|ister...|
|00001580| 54 68 65 20 73 75 6d 20 | 6f 76 65 72 20 74 68 65 |The sum |over the|
|00001590| 20 70 6f 69 6e 74 20 73 | 70 72 65 61 64 20 66 75 | point s|pread fu|
|000015a0| 6e 63 74 69 6f 6e 20 66 | 5b 5d 20 77 69 6c 6c 20 |nction f|[] will |
|000015b0| 79 69 65 6c 64 20 61 74 | 20 6d 6f 73 74 20 74 6d |yield at| most tm|
|000015c0| 61 78 2c 20 64 65 66 69 | 6e 65 64 20 62 65 6c 6f |ax, defi|ned belo|
|000015d0| 77 2c 0d 09 73 6f 20 77 | 65 20 63 61 6e 20 73 61 |w,..so w|e can sa|
|000015e0| 66 65 6c 79 20 6d 75 6c | 74 69 70 6c 79 20 66 5b |fely mul|tiply f[|
|000015f0| 5d 20 62 79 20 4c 4f 4e | 47 5f 4d 41 58 2f 74 6d |] by LON|G_MAX/tm|
|00001600| 61 78 2c 20 77 69 74 68 | 6f 75 74 20 64 61 6e 67 |ax, with|out dang|
|00001610| 65 72 20 6f 66 20 6f 76 | 65 72 66 6c 6f 77 69 6e |er of ov|erflowin|
|00001620| 67 20 74 2e 0d 09 2a 2f | 0d 09 66 6f 72 20 28 74 |g t...*/|..for (t|
|00001630| 6d 61 78 3d 30 2e 30 2c | 20 69 3d 30 3b 69 3c 64 |max=0.0,| i=0;i<d|
|00001640| 69 6d 3b 69 2b 2b 29 20 | 74 6d 61 78 20 2b 3d 20 |im;i++) |tmax += |
|00001650| 66 61 62 73 28 66 5b 69 | 5d 29 3b 0d 09 74 6d 61 |fabs(f[i|]);..tma|
|00001660| 78 20 2a 3d 20 55 43 48 | 41 52 5f 4d 41 58 2b 31 |x *= UCH|AR_MAX+1|
|00001670| 3b 09 2f 2a 20 6d 61 78 | 69 6d 75 6d 20 76 61 6c |;./* max|imum val|
|00001680| 75 65 20 66 6f 72 20 61 | 20 70 69 78 65 6c 2c 20 |ue for a| pixel, |
|00001690| 32 35 35 2c 20 70 6c 75 | 73 20 31 20 66 6f 72 20 |255, plu|s 1 for |
|000016a0| 72 6f 75 6e 64 69 6e 67 | 20 2a 2f 0d 09 69 66 28 |rounding| */..if(|
|000016b0| 74 6d 61 78 3c 31 2e 30 | 29 74 6d 61 78 3d 31 2e |tmax<1.0|)tmax=1.|
|000016c0| 30 3b 0d 09 69 66 75 6e | 53 63 61 6c 65 20 3d 20 |0;..ifun|Scale = |
|000016d0| 4c 4f 4e 47 5f 4d 41 58 | 2f 74 6d 61 78 3b 0d 09 |LONG_MAX|/tmax;..|
|000016e0| 66 6f 72 20 28 69 3d 30 | 3b 69 3c 64 69 6d 3b 69 |for (i=0|;i<dim;i|
|000016f0| 2b 2b 29 20 69 66 75 6e | 5b 69 5d 20 3d 20 66 5b |++) ifun|[i] = f[|
|00001700| 69 5d 2a 69 66 75 6e 53 | 63 61 6c 65 3b 0d 09 0d |i]*ifunS|cale;...|
|00001710| 09 23 69 66 20 44 49 41 | 47 4e 4f 53 54 49 43 53 |.#if DIA|GNOSTICS|
|00001720| 0d 09 09 2f 2a 20 54 68 | 69 73 20 69 73 20 61 20 |.../* Th|is is a |
|00001730| 64 69 61 67 6e 6f 73 74 | 69 63 20 70 72 69 6e 74 |diagnost|ic print|
|00001740| 6f 75 74 20 74 6f 20 74 | 72 61 63 6b 20 64 6f 77 |out to t|rack dow|
|00001750| 6e 20 6f 76 65 72 66 6c | 6f 77 20 70 72 6f 62 6c |n overfl|ow probl|
|00001760| 65 6d 73 20 2a 2f 0d 09 | 09 74 20 3d 20 30 4c 3b |ems */..|.t = 0L;|
|00001770| 0d 09 09 61 20 3d 20 30 | 2e 30 3b 0d 09 09 66 6f |...a = 0|.0;...fo|
|00001780| 72 20 28 69 3d 30 3b 69 | 3c 64 69 6d 3b 69 2b 2b |r (i=0;i|<dim;i++|
|00001790| 29 20 7b 0d 09 09 09 74 | 20 2b 3d 20 6c 61 62 73 |) {....t| += labs|
|000017a0| 28 55 43 48 41 52 5f 4d | 41 58 2a 69 66 75 6e 5b |(UCHAR_M|AX*ifun[|
|000017b0| 69 5d 29 3b 0d 09 09 09 | 61 20 2b 3d 20 66 61 62 |i]);....|a += fab|
|000017c0| 73 28 66 5b 69 5d 29 3b | 0d 09 09 7d 0d 09 09 64 |s(f[i]);|...}...d|
|000017d0| 65 76 69 63 65 3d 47 65 | 74 47 44 65 76 69 63 65 |evice=Ge|tGDevice|
|000017e0| 28 29 3b 0d 09 09 53 65 | 74 47 44 65 76 69 63 65 |();...Se|tGDevice|
|000017f0| 28 47 65 74 4d 61 69 6e | 44 65 76 69 63 65 28 29 |(GetMain|Device()|
|00001800| 29 3b 0d 09 09 50 6d 46 | 6f 72 65 43 6f 6c 6f 72 |);...PmF|oreColor|
|00001810| 28 55 43 48 41 52 5f 4d | 41 58 29 3b 0d 09 09 50 |(UCHAR_M|AX);...P|
|00001820| 6d 42 61 63 6b 43 6f 6c | 6f 72 28 30 29 3b 0d 09 |mBackCol|or(0);..|
|00001830| 09 50 72 69 6e 74 66 45 | 78 69 74 28 22 61 3d 25 |.PrintfE|xit("a=%|
|00001840| 6c 66 2c 20 74 3d 25 6c | 78 2c 20 69 66 75 6e 53 |lf, t=%l|x, ifunS|
|00001850| 63 61 6c 65 3d 25 6c 78 | 2c 20 74 2f 69 66 75 6e |cale=%lx|, t/ifun|
|00001860| 53 63 61 6c 65 3d 25 6c | 66 5c 6e 22 2c 61 2c 74 |Scale=%l|f\n",a,t|
|00001870| 2c 69 66 75 6e 53 63 61 | 6c 65 2c 74 2a 31 2e 30 |,ifunSca|le,t*1.0|
|00001880| 2f 69 66 75 6e 53 63 61 | 6c 65 29 3b 0d 09 09 53 |/ifunSca|le);...S|
|00001890| 65 74 47 44 65 76 69 63 | 65 28 64 65 76 69 63 65 |etGDevic|e(device|
|000018a0| 29 3b 0d 09 23 65 6e 64 | 69 66 0d 09 0d 09 2f 2a |);..#end|if..../*|
|000018b0| 0d 09 55 6e 66 6f 72 74 | 75 6e 61 74 65 6c 79 20 |..Unfort|unately |
|000018c0| 43 6f 70 79 42 69 74 73 | 20 77 69 6c 6c 20 63 72 |CopyBits| will cr|
|000018d0| 61 73 68 20 69 66 20 74 | 68 65 20 6c 69 6e 65 20 |ash if t|he line |
|000018e0| 62 75 66 66 65 72 20 69 | 73 20 74 6f 6f 20 6c 61 |buffer i|s too la|
|000018f0| 72 67 65 2c 20 65 2e 67 | 2e 0d 09 36 34 30 20 70 |rge, e.g|...640 p|
|00001900| 69 78 65 6c 73 20 6c 6f | 6e 67 2e 20 57 65 20 63 |ixels lo|ng. We c|
|00001910| 61 6e 20 6d 69 6e 69 6d | 69 7a 65 20 74 68 69 73 |an minim|ize this|
|00001920| 20 70 72 6f 62 6c 65 6d | 20 62 79 20 72 65 64 75 | problem| by redu|
|00001930| 63 69 6e 67 20 74 68 65 | 20 73 69 7a 65 20 6f 66 |cing the| size of|
|00001940| 20 74 68 65 0d 09 73 72 | 63 52 65 63 74 20 74 6f | the..sr|cRect to|
|00001950| 20 62 65 20 6e 6f 20 6c | 61 72 67 65 72 20 74 68 | be no l|arger th|
|00001960| 61 6e 20 6e 65 63 65 73 | 73 61 72 79 20 28 69 2e |an neces|sary (i.|
|00001970| 65 2e 20 64 73 74 52 65 | 63 74 20 70 6c 75 73 20 |e. dstRe|ct plus |
|00001980| 64 69 6d 29 2e 0d 09 2a | 2f 0d 09 6d 79 73 72 63 |dim)...*|/..mysrc|
|00001990| 52 65 63 74 20 3d 20 2a | 73 72 63 52 65 63 74 50 |Rect = *|srcRectP|
|000019a0| 74 72 3b 0d 09 6d 79 64 | 73 74 52 65 63 74 20 3d |tr;..myd|stRect =|
|000019b0| 20 2a 64 73 74 52 65 63 | 74 50 74 72 3b 0d 09 69 | *dstRec|tPtr;..i|
|000019c0| 66 28 63 6f 6e 76 6f 6c | 76 65 58 29 7b 0d 09 09 |f(convol|veX){...|
|000019d0| 69 3d 6d 79 73 72 63 52 | 65 63 74 2e 72 69 67 68 |i=mysrcR|ect.righ|
|000019e0| 74 2d 6d 79 73 72 63 52 | 65 63 74 2e 6c 65 66 74 |t-mysrcR|ect.left|
|000019f0| 20 2d 20 28 64 69 6d 2b | 6d 79 64 73 74 52 65 63 | - (dim+|mydstRec|
|00001a00| 74 2e 72 69 67 68 74 2d | 6d 79 64 73 74 52 65 63 |t.right-|mydstRec|
|00001a10| 74 2e 6c 65 66 74 29 3b | 0d 09 09 69 66 28 69 3e |t.left);|...if(i>|
|00001a20| 30 29 49 6e 73 65 74 52 | 65 63 74 28 26 6d 79 73 |0)InsetR|ect(&mys|
|00001a30| 72 63 52 65 63 74 2c 69 | 2f 32 2c 30 29 3b 0d 09 |rcRect,i|/2,0);..|
|00001a40| 09 69 3d 6d 79 73 72 63 | 52 65 63 74 2e 62 6f 74 |.i=mysrc|Rect.bot|
|00001a50| 74 6f 6d 2d 6d 79 73 72 | 63 52 65 63 74 2e 74 6f |tom-mysr|cRect.to|
|00001a60| 70 20 2d 20 28 6d 79 64 | 73 74 52 65 63 74 2e 62 |p - (myd|stRect.b|
|00001a70| 6f 74 74 6f 6d 2d 6d 79 | 64 73 74 52 65 63 74 2e |ottom-my|dstRect.|
|00001a80| 74 6f 70 29 3b 0d 09 09 | 69 66 28 69 3e 30 29 49 |top);...|if(i>0)I|
|00001a90| 6e 73 65 74 52 65 63 74 | 28 26 6d 79 73 72 63 52 |nsetRect|(&mysrcR|
|00001aa0| 65 63 74 2c 30 2c 69 2f | 32 29 3b 0d 09 09 69 66 |ect,0,i/|2);...if|
|00001ab0| 28 69 3c 30 29 49 6e 73 | 65 74 52 65 63 74 28 26 |(i<0)Ins|etRect(&|
|00001ac0| 6d 79 64 73 74 52 65 63 | 74 2c 30 2c 2d 69 2f 32 |mydstRec|t,0,-i/2|
|00001ad0| 29 3b 0d 09 7d 65 6c 73 | 65 7b 0d 09 09 69 3d 6d |);..}els|e{...i=m|
|00001ae0| 79 73 72 63 52 65 63 74 | 2e 72 69 67 68 74 2d 6d |ysrcRect|.right-m|
|00001af0| 79 73 72 63 52 65 63 74 | 2e 6c 65 66 74 20 2d 20 |ysrcRect|.left - |
|00001b00| 28 6d 79 64 73 74 52 65 | 63 74 2e 72 69 67 68 74 |(mydstRe|ct.right|
|00001b10| 2d 6d 79 64 73 74 52 65 | 63 74 2e 6c 65 66 74 29 |-mydstRe|ct.left)|
|00001b20| 3b 0d 09 09 69 66 28 69 | 3e 30 29 49 6e 73 65 74 |;...if(i|>0)Inset|
|00001b30| 52 65 63 74 28 26 6d 79 | 73 72 63 52 65 63 74 2c |Rect(&my|srcRect,|
|00001b40| 69 2f 32 2c 30 29 3b 0d | 09 09 69 66 28 69 3c 30 |i/2,0);.|..if(i<0|
|00001b50| 29 49 6e 73 65 74 52 65 | 63 74 28 26 6d 79 64 73 |)InsetRe|ct(&myds|
|00001b60| 74 52 65 63 74 2c 2d 69 | 2f 32 2c 30 29 3b 0d 09 |tRect,-i|/2,0);..|
|00001b70| 09 69 3d 6d 79 73 72 63 | 52 65 63 74 2e 62 6f 74 |.i=mysrc|Rect.bot|
|00001b80| 74 6f 6d 2d 6d 79 73 72 | 63 52 65 63 74 2e 74 6f |tom-mysr|cRect.to|
|00001b90| 70 20 2d 20 28 64 69 6d | 2b 6d 79 64 73 74 52 65 |p - (dim|+mydstRe|
|00001ba0| 63 74 2e 62 6f 74 74 6f | 6d 2d 6d 79 64 73 74 52 |ct.botto|m-mydstR|
|00001bb0| 65 63 74 2e 74 6f 70 29 | 3b 0d 09 09 69 66 28 69 |ect.top)|;...if(i|
|00001bc0| 3e 30 29 49 6e 73 65 74 | 52 65 63 74 28 26 6d 79 |>0)Inset|Rect(&my|
|00001bd0| 73 72 63 52 65 63 74 2c | 30 2c 69 2f 32 29 3b 0d |srcRect,|0,i/2);.|
|00001be0| 09 7d 0d 09 73 72 63 52 | 65 63 74 50 74 72 20 3d |.}..srcR|ectPtr =|
|00001bf0| 20 26 6d 79 73 72 63 52 | 65 63 74 3b 0d 09 64 73 | &mysrcR|ect;..ds|
|00001c00| 74 52 65 63 74 50 74 72 | 20 3d 20 26 6d 79 64 73 |tRectPtr| = &myds|
|00001c10| 74 52 65 63 74 3b 0d 0d | 09 69 66 28 63 6f 6e 76 |tRect;..|.if(conv|
|00001c20| 6f 6c 76 65 58 29 7b 0d | 09 09 64 73 74 4c 69 6e |olveX){.|..dstLin|
|00001c30| 65 73 20 3d 20 64 73 74 | 52 65 63 74 50 74 72 2d |es = dst|RectPtr-|
|00001c40| 3e 62 6f 74 74 6f 6d 2d | 64 73 74 52 65 63 74 50 |>bottom-|dstRectP|
|00001c50| 74 72 2d 3e 74 6f 70 3b | 0d 09 09 73 72 63 4c 69 |tr->top;|...srcLi|
|00001c60| 6e 65 73 20 3d 20 73 72 | 63 52 65 63 74 50 74 72 |nes = sr|cRectPtr|
|00001c70| 2d 3e 62 6f 74 74 6f 6d | 2d 73 72 63 52 65 63 74 |->bottom|-srcRect|
|00001c80| 50 74 72 2d 3e 74 6f 70 | 3b 0d 09 09 64 73 74 4c |Ptr->top|;...dstL|
|00001c90| 65 6e 67 74 68 20 3d 20 | 64 73 74 52 65 63 74 50 |ength = |dstRectP|
|00001ca0| 74 72 2d 3e 72 69 67 68 | 74 2d 64 73 74 52 65 63 |tr->righ|t-dstRec|
|00001cb0| 74 50 74 72 2d 3e 6c 65 | 66 74 3b 0d 09 09 73 72 |tPtr->le|ft;...sr|
|00001cc0| 63 4c 65 6e 67 74 68 20 | 3d 20 73 72 63 52 65 63 |cLength |= srcRec|
|00001cd0| 74 50 74 72 2d 3e 72 69 | 67 68 74 2d 73 72 63 52 |tPtr->ri|ght-srcR|
|00001ce0| 65 63 74 50 74 72 2d 3e | 6c 65 66 74 3b 0d 09 7d |ectPtr->|left;..}|
|00001cf0| 65 6c 73 65 7b 0d 09 09 | 64 73 74 4c 65 6e 67 74 |else{...|dstLengt|
|00001d00| 68 20 3d 20 64 73 74 52 | 65 63 74 50 74 72 2d 3e |h = dstR|ectPtr->|
|00001d10| 62 6f 74 74 6f 6d 2d 64 | 73 74 52 65 63 74 50 74 |bottom-d|stRectPt|
|00001d20| 72 2d 3e 74 6f 70 3b 0d | 09 09 73 72 63 4c 65 6e |r->top;.|..srcLen|
|00001d30| 67 74 68 20 3d 20 73 72 | 63 52 65 63 74 50 74 72 |gth = sr|cRectPtr|
|00001d40| 2d 3e 62 6f 74 74 6f 6d | 2d 73 72 63 52 65 63 74 |->bottom|-srcRect|
|00001d50| 50 74 72 2d 3e 74 6f 70 | 3b 0d 09 09 64 73 74 4c |Ptr->top|;...dstL|
|00001d60| 69 6e 65 73 20 3d 20 64 | 73 74 52 65 63 74 50 74 |ines = d|stRectPt|
|00001d70| 72 2d 3e 72 69 67 68 74 | 2d 64 73 74 52 65 63 74 |r->right|-dstRect|
|00001d80| 50 74 72 2d 3e 6c 65 66 | 74 3b 0d 09 09 73 72 63 |Ptr->lef|t;...src|
|00001d90| 4c 69 6e 65 73 20 3d 20 | 73 72 63 52 65 63 74 50 |Lines = |srcRectP|
|00001da0| 74 72 2d 3e 72 69 67 68 | 74 2d 73 72 63 52 65 63 |tr->righ|t-srcRec|
|00001db0| 74 50 74 72 2d 3e 6c 65 | 66 74 3b 0d 09 7d 0d 09 |tPtr->le|ft;..}..|
|00001dc0| 69 66 28 64 73 74 4c 69 | 6e 65 73 20 3e 20 73 72 |if(dstLi|nes > sr|
|00001dd0| 63 4c 69 6e 65 73 29 20 | 6c 69 6e 65 73 20 3d 20 |cLines) |lines = |
|00001de0| 73 72 63 4c 69 6e 65 73 | 3b 20 0d 09 65 6c 73 65 |srcLines|; ..else|
|00001df0| 20 6c 69 6e 65 73 20 3d | 20 64 73 74 4c 69 6e 65 | lines =| dstLine|
|00001e00| 73 3b 0d 09 0d 09 2f 2a | 20 41 6c 6c 6f 63 61 74 |s;..../*| Allocat|
|00001e10| 65 20 6f 75 72 20 6c 69 | 6e 65 20 62 75 66 66 65 |e our li|ne buffe|
|00001e20| 72 73 2e 20 2a 2f 0d 09 | 73 72 63 54 6d 70 20 3d |rs. */..|srcTmp =|
|00001e30| 20 2a 2a 28 2a 47 65 74 | 47 44 65 76 69 63 65 28 | **(*Get|GDevice(|
|00001e40| 29 29 2d 3e 67 64 50 4d | 61 70 3b 09 2f 2a 20 55 |))->gdPM|ap;./* U|
|00001e50| 73 65 20 63 75 72 72 65 | 6e 74 20 64 65 76 69 63 |se curre|nt devic|
|00001e60| 65 20 74 6f 20 69 6e 69 | 74 20 50 69 78 4d 61 70 |e to ini|t PixMap|
|00001e70| 20 66 69 65 6c 64 73 20 | 2a 2f 0d 09 73 72 63 54 | fields |*/..srcT|
|00001e80| 6d 70 2e 70 6d 56 65 72 | 73 69 6f 6e 3d 73 72 63 |mp.pmVer|sion=src|
|00001e90| 54 6d 70 2e 70 61 63 6b | 54 79 70 65 3d 73 72 63 |Tmp.pack|Type=src|
|00001ea0| 54 6d 70 2e 70 61 63 6b | 53 69 7a 65 3d 30 3b 0d |Tmp.pack|Size=0;.|
|00001eb0| 09 73 72 63 54 6d 70 2e | 70 6c 61 6e 65 42 79 74 |.srcTmp.|planeByt|
|00001ec0| 65 73 3d 73 72 63 54 6d | 70 2e 70 6d 52 65 73 65 |es=srcTm|p.pmRese|
|00001ed0| 72 76 65 64 3d 30 3b 0d | 09 73 72 63 54 6d 70 2e |rved=0;.|.srcTmp.|
|00001ee0| 63 6d 70 43 6f 75 6e 74 | 3d 31 3b 0d 09 73 72 63 |cmpCount|=1;..src|
|00001ef0| 54 6d 70 2e 70 69 78 65 | 6c 53 69 7a 65 3d 38 3b |Tmp.pixe|lSize=8;|
|00001f00| 09 09 09 09 09 2f 2a 20 | 54 68 65 20 6d 61 69 6e |...../* |The main|
|00001f10| 20 6c 6f 6f 70 20 61 73 | 73 75 6d 65 73 20 38 20 | loop as|sumes 8 |
|00001f20| 62 69 74 73 20 70 65 72 | 20 70 69 78 65 6c 20 2a |bits per| pixel *|
|00001f30| 2f 0d 09 69 66 28 63 6f | 6e 76 6f 6c 76 65 58 29 |/..if(co|nvolveX)|
|00001f40| 7b 0d 09 09 53 65 74 52 | 65 63 74 28 26 73 72 63 |{...SetR|ect(&src|
|00001f50| 54 6d 70 2e 62 6f 75 6e | 64 73 2c 30 2c 30 2c 73 |Tmp.boun|ds,0,0,s|
|00001f60| 72 63 4c 65 6e 67 74 68 | 2c 31 29 3b 09 2f 2a 20 |rcLength|,1);./* |
|00001f70| 61 20 68 6f 72 69 7a 6f | 6e 74 61 6c 20 6c 69 6e |a horizo|ntal lin|
|00001f80| 65 20 62 75 66 66 65 72 | 20 2a 2f 0d 09 7d 65 6c |e buffer| */..}el|
|00001f90| 73 65 7b 0d 09 09 53 65 | 74 52 65 63 74 28 26 73 |se{...Se|tRect(&s|
|00001fa0| 72 63 54 6d 70 2e 62 6f | 75 6e 64 73 2c 30 2c 30 |rcTmp.bo|unds,0,0|
|00001fb0| 2c 31 2c 73 72 63 4c 65 | 6e 67 74 68 29 3b 09 2f |,1,srcLe|ngth);./|
|00001fc0| 2a 20 61 20 76 65 72 74 | 69 63 61 6c 20 6c 69 6e |* a vert|ical lin|
|00001fd0| 65 20 62 75 66 66 65 72 | 20 2a 2f 0d 09 7d 0d 09 |e buffer| */..}..|
|00001fe0| 73 72 63 54 6d 70 2e 72 | 6f 77 42 79 74 65 73 20 |srcTmp.r|owBytes |
|00001ff0| 3d 20 32 2a 28 28 28 73 | 72 63 54 6d 70 2e 62 6f |= 2*(((s|rcTmp.bo|
|00002000| 75 6e 64 73 2e 72 69 67 | 68 74 2d 73 72 63 54 6d |unds.rig|ht-srcTm|
|00002010| 70 2e 62 6f 75 6e 64 73 | 2e 6c 65 66 74 29 2a 73 |p.bounds|.left)*s|
|00002020| 72 63 54 6d 70 2e 70 69 | 78 65 6c 53 69 7a 65 2b |rcTmp.pi|xelSize+|
|00002030| 31 35 29 2f 31 36 29 3b | 0d 09 73 72 63 54 6d 70 |15)/16);|..srcTmp|
|00002040| 2e 62 61 73 65 41 64 64 | 72 20 3d 20 28 50 74 72 |.baseAdd|r = (Ptr|
|00002050| 29 20 6d 61 6c 6c 6f 63 | 28 73 72 63 54 6d 70 2e |) malloc|(srcTmp.|
|00002060| 72 6f 77 42 79 74 65 73 | 2a 28 73 72 63 54 6d 70 |rowBytes|*(srcTmp|
|00002070| 2e 62 6f 75 6e 64 73 2e | 62 6f 74 74 6f 6d 2d 73 |.bounds.|bottom-s|
|00002080| 72 63 54 6d 70 2e 62 6f | 75 6e 64 73 2e 74 6f 70 |rcTmp.bo|unds.top|
|00002090| 29 29 3b 0d 09 73 72 63 | 54 6d 70 2e 72 6f 77 42 |));..src|Tmp.rowB|
|000020a0| 79 74 65 73 20 7c 3d 20 | 30 78 38 30 30 30 3b 09 |ytes |= |0x8000;.|
|000020b0| 2f 2a 20 4d 61 72 6b 20 | 69 74 20 61 73 20 61 20 |/* Mark |it as a |
|000020c0| 50 69 78 4d 61 70 2c 20 | 6e 6f 74 20 61 20 42 69 |PixMap, |not a Bi|
|000020d0| 74 4d 61 70 20 2a 2f 0d | 09 64 73 74 54 6d 70 20 |tMap */.|.dstTmp |
|000020e0| 3d 20 73 72 63 54 6d 70 | 3b 0d 09 69 66 28 63 6f |= srcTmp|;..if(co|
|000020f0| 6e 76 6f 6c 76 65 58 29 | 7b 0d 09 09 53 65 74 52 |nvolveX)|{...SetR|
|00002100| 65 63 74 28 26 64 73 74 | 54 6d 70 2e 62 6f 75 6e |ect(&dst|Tmp.boun|
|00002110| 64 73 2c 30 2c 30 2c 64 | 73 74 4c 65 6e 67 74 68 |ds,0,0,d|stLength|
|00002120| 2c 31 29 3b 09 2f 2a 20 | 61 20 68 6f 72 69 7a 6f |,1);./* |a horizo|
|00002130| 6e 74 61 6c 20 6c 69 6e | 65 20 62 75 66 66 65 72 |ntal lin|e buffer|
|00002140| 20 2a 2f 0d 09 7d 65 6c | 73 65 7b 0d 09 09 53 65 | */..}el|se{...Se|
|00002150| 74 52 65 63 74 28 26 64 | 73 74 54 6d 70 2e 62 6f |tRect(&d|stTmp.bo|
|00002160| 75 6e 64 73 2c 30 2c 30 | 2c 31 2c 64 73 74 4c 65 |unds,0,0|,1,dstLe|
|00002170| 6e 67 74 68 29 3b 09 2f | 2a 20 61 20 76 65 72 74 |ngth);./|* a vert|
|00002180| 69 63 61 6c 20 6c 69 6e | 65 20 62 75 66 66 65 72 |ical lin|e buffer|
|00002190| 20 2a 2f 0d 09 7d 0d 09 | 64 73 74 54 6d 70 2e 72 | */..}..|dstTmp.r|
|000021a0| 6f 77 42 79 74 65 73 20 | 3d 20 32 2a 28 28 28 64 |owBytes |= 2*(((d|
|000021b0| 73 74 54 6d 70 2e 62 6f | 75 6e 64 73 2e 72 69 67 |stTmp.bo|unds.rig|
|000021c0| 68 74 2d 64 73 74 54 6d | 70 2e 62 6f 75 6e 64 73 |ht-dstTm|p.bounds|
|000021d0| 2e 6c 65 66 74 29 2a 64 | 73 74 54 6d 70 2e 70 69 |.left)*d|stTmp.pi|
|000021e0| 78 65 6c 53 69 7a 65 2b | 31 35 29 2f 31 36 29 3b |xelSize+|15)/16);|
|000021f0| 0d 09 64 73 74 54 6d 70 | 2e 62 61 73 65 41 64 64 |..dstTmp|.baseAdd|
|00002200| 72 20 3d 20 28 50 74 72 | 29 20 6d 61 6c 6c 6f 63 |r = (Ptr|) malloc|
|00002210| 28 64 73 74 54 6d 70 2e | 72 6f 77 42 79 74 65 73 |(dstTmp.|rowBytes|
|00002220| 2a 28 64 73 74 54 6d 70 | 2e 62 6f 75 6e 64 73 2e |*(dstTmp|.bounds.|
|00002230| 62 6f 74 74 6f 6d 2d 64 | 73 74 54 6d 70 2e 62 6f |bottom-d|stTmp.bo|
|00002240| 75 6e 64 73 2e 74 6f 70 | 29 29 3b 0d 09 64 73 74 |unds.top|));..dst|
|00002250| 54 6d 70 2e 72 6f 77 42 | 79 74 65 73 20 7c 3d 20 |Tmp.rowB|ytes |= |
|00002260| 30 78 38 30 30 30 3b 09 | 2f 2a 20 4d 61 72 6b 20 |0x8000;.|/* Mark |
|00002270| 69 74 20 61 73 20 61 20 | 50 69 78 4d 61 70 2c 20 |it as a |PixMap, |
|00002280| 6e 6f 74 20 61 20 42 69 | 74 4d 61 70 20 2a 2f 0d |not a Bi|tMap */.|
|00002290| 09 69 66 28 73 72 63 54 | 6d 70 2e 62 61 73 65 41 |.if(srcT|mp.baseA|
|000022a0| 64 64 72 20 3d 3d 20 4e | 55 4c 4c 20 7c 7c 20 64 |ddr == N|ULL || d|
|000022b0| 73 74 54 6d 70 2e 62 61 | 73 65 41 64 64 72 20 3d |stTmp.ba|seAddr =|
|000022c0| 3d 20 4e 55 4c 4c 29 0d | 09 09 50 72 69 6e 74 66 |= NULL).|..Printf|
|000022d0| 45 78 69 74 28 22 43 6f | 6e 76 6f 6c 76 65 58 2f |Exit("Co|nvolveX/|
|000022e0| 59 3a 20 53 6f 72 72 79 | 2c 20 63 6f 75 6c 64 6e |Y: Sorry|, couldn|
|000022f0| 27 74 20 61 6c 6c 6f 63 | 61 74 65 20 65 6e 6f 75 |'t alloc|ate enou|
|00002300| 67 68 20 6d 65 6d 6f 72 | 79 20 66 6f 72 20 77 6f |gh memor|y for wo|
|00002310| 72 6b 69 6e 67 20 61 72 | 72 61 79 73 5c 30 30 37 |rking ar|rays\007|
|00002320| 5c 6e 22 29 3b 0d 09 0d | 09 2f 2a 20 44 65 66 69 |\n");...|./* Defi|
|00002330| 6e 65 20 74 68 65 20 72 | 65 63 74 61 6e 67 6c 65 |ne the r|ectangle|
|00002340| 73 20 74 68 61 74 20 6d | 61 70 20 73 72 63 20 61 |s that m|ap src a|
|00002350| 6e 64 20 64 73 74 20 74 | 6f 20 74 68 65 69 72 20 |nd dst t|o their |
|00002360| 72 65 73 70 65 63 74 69 | 76 65 20 6c 69 6e 65 20 |respecti|ve line |
|00002370| 62 75 66 66 65 72 73 20 | 2a 2f 0d 09 73 72 63 52 |buffers |*/..srcR|
|00002380| 65 63 74 20 3d 20 73 72 | 63 54 6d 70 2e 62 6f 75 |ect = sr|cTmp.bou|
|00002390| 6e 64 73 3b 0d 09 4f 66 | 66 73 65 74 52 65 63 74 |nds;..Of|fsetRect|
|000023a0| 28 26 73 72 63 52 65 63 | 74 2c 73 72 63 52 65 63 |(&srcRec|t,srcRec|
|000023b0| 74 50 74 72 2d 3e 6c 65 | 66 74 2c 73 72 63 52 65 |tPtr->le|ft,srcRe|
|000023c0| 63 74 50 74 72 2d 3e 74 | 6f 70 29 3b 0d 09 64 73 |ctPtr->t|op);..ds|
|000023d0| 74 52 65 63 74 20 3d 20 | 64 73 74 54 6d 70 2e 62 |tRect = |dstTmp.b|
|000023e0| 6f 75 6e 64 73 3b 0d 09 | 4f 66 66 73 65 74 52 65 |ounds;..|OffsetRe|
|000023f0| 63 74 28 26 64 73 74 52 | 65 63 74 2c 64 73 74 52 |ct(&dstR|ect,dstR|
|00002400| 65 63 74 50 74 72 2d 3e | 6c 65 66 74 2c 64 73 74 |ectPtr->|left,dst|
|00002410| 52 65 63 74 50 74 72 2d | 3e 74 6f 70 29 3b 0d 09 |RectPtr-|>top);..|
|00002420| 69 66 28 63 6f 6e 76 6f | 6c 76 65 58 29 7b 0d 09 |if(convo|lveX){..|
|00002430| 09 4f 66 66 73 65 74 52 | 65 63 74 28 26 73 72 63 |.OffsetR|ect(&src|
|00002440| 52 65 63 74 2c 30 2c 73 | 72 63 4c 69 6e 65 73 2f |Rect,0,s|rcLines/|
|00002450| 32 2d 6c 69 6e 65 73 2f | 32 29 3b 0d 09 09 4f 66 |2-lines/|2);...Of|
|00002460| 66 73 65 74 52 65 63 74 | 28 26 64 73 74 52 65 63 |fsetRect|(&dstRec|
|00002470| 74 2c 30 2c 64 73 74 4c | 69 6e 65 73 2f 32 2d 6c |t,0,dstL|ines/2-l|
|00002480| 69 6e 65 73 2f 32 29 3b | 0d 09 7d 65 6c 73 65 7b |ines/2);|..}else{|
|00002490| 0d 09 09 4f 66 66 73 65 | 74 52 65 63 74 28 26 73 |...Offse|tRect(&s|
|000024a0| 72 63 52 65 63 74 2c 73 | 72 63 4c 69 6e 65 73 2f |rcRect,s|rcLines/|
|000024b0| 32 2d 6c 69 6e 65 73 2f | 32 2c 30 29 3b 0d 09 09 |2-lines/|2,0);...|
|000024c0| 4f 66 66 73 65 74 52 65 | 63 74 28 26 64 73 74 52 |OffsetRe|ct(&dstR|
|000024d0| 65 63 74 2c 64 73 74 4c | 69 6e 65 73 2f 32 2d 6c |ect,dstL|ines/2-l|
|000024e0| 69 6e 65 73 2f 32 2c 30 | 29 3b 0d 09 7d 0d 09 0d |ines/2,0|);..}...|
|000024f0| 09 2f 2a 20 43 6f 6e 76 | 6f 6c 76 65 20 6f 6e 65 |./* Conv|olve one|
|00002500| 20 6c 69 6e 65 20 70 65 | 72 20 69 74 65 72 61 74 | line pe|r iterat|
|00002510| 69 6f 6e 20 2a 2f 0d 09 | 2f 2a 20 79 20 69 6e 64 |ion */..|/* y ind|
|00002520| 69 63 61 74 65 73 20 77 | 68 69 63 68 20 6c 69 6e |icates w|hich lin|
|00002530| 65 2c 20 78 20 69 6e 64 | 69 63 61 74 65 73 20 77 |e, x ind|icates w|
|00002540| 68 69 63 68 20 70 69 78 | 65 6c 20 61 6c 6f 6e 67 |hich pix|el along|
|00002550| 20 74 68 61 74 20 6c 69 | 6e 65 20 2a 2f 0d 09 66 | that li|ne */..f|
|00002560| 6f 72 20 28 79 3d 20 2d | 6c 69 6e 65 73 2f 32 3b |or (y= -|lines/2;|
|00002570| 20 79 3c 28 6c 69 6e 65 | 73 2b 31 29 2f 32 3b 20 | y<(line|s+1)/2; |
|00002580| 79 2b 2b 29 20 7b 0d 09 | 09 2f 2a 20 66 69 72 73 |y++) {..|./* firs|
|00002590| 74 20 63 6f 70 79 20 61 | 20 6c 69 6e 65 20 66 72 |t copy a| line fr|
|000025a0| 6f 6d 20 73 72 63 42 69 | 74 73 20 69 6e 74 6f 20 |om srcBi|ts into |
|000025b0| 6c 69 6e 65 2d 62 75 66 | 66 65 72 20 73 72 63 54 |line-buf|fer srcT|
|000025c0| 6d 70 20 2a 2f 0d 09 09 | 69 66 28 73 72 63 50 69 |mp */...|if(srcPi|
|000025d0| 78 65 6c 53 69 7a 65 20 | 3d 3d 20 73 72 63 54 6d |xelSize |== srcTm|
|000025e0| 70 2e 70 69 78 65 6c 53 | 69 7a 65 29 0d 09 09 09 |p.pixelS|ize)....|
|000025f0| 43 6f 70 79 42 69 74 73 | 51 75 69 63 6b 6c 79 28 |CopyBits|Quickly(|
|00002600| 73 72 63 42 69 74 73 2c | 28 42 69 74 4d 61 70 20 |srcBits,|(BitMap |
|00002610| 2a 29 20 26 73 72 63 54 | 6d 70 2c 26 73 72 63 52 |*) &srcT|mp,&srcR|
|00002620| 65 63 74 2c 26 73 72 63 | 54 6d 70 2e 62 6f 75 6e |ect,&src|Tmp.boun|
|00002630| 64 73 2c 73 72 63 43 6f | 70 79 2c 4e 55 4c 4c 29 |ds,srcCo|py,NULL)|
|00002640| 3b 0d 09 09 65 6c 73 65 | 0d 09 09 09 43 6f 70 79 |;...else|....Copy|
|00002650| 42 69 74 73 28 73 72 63 | 42 69 74 73 2c 28 42 69 |Bits(src|Bits,(Bi|
|00002660| 74 4d 61 70 20 2a 29 20 | 26 73 72 63 54 6d 70 2c |tMap *) |&srcTmp,|
|00002670| 26 73 72 63 52 65 63 74 | 2c 26 73 72 63 54 6d 70 |&srcRect|,&srcTmp|
|00002680| 2e 62 6f 75 6e 64 73 2c | 73 72 63 43 6f 70 79 2c |.bounds,|srcCopy,|
|00002690| 4e 55 4c 4c 29 3b 0d 09 | 09 69 66 28 63 61 6e 33 |NULL);..|.if(can3|
|000026a0| 32 29 53 77 61 70 4d 4d | 55 4d 6f 64 65 28 28 76 |2)SwapMM|UMode((v|
|000026b0| 6f 69 64 20 2a 29 26 6d | 6d 75 4d 6f 64 65 29 3b |oid *)&m|muMode);|
|000026c0| 0d 09 09 69 66 28 21 63 | 6f 6e 76 6f 6c 76 65 58 |...if(!c|onvolveX|
|000026d0| 29 7b 0d 09 09 09 2f 2a | 20 55 6e 66 6f 72 74 75 |){..../*| Unfortu|
|000026e0| 6e 61 74 65 6c 79 20 74 | 68 65 20 6d 69 6e 69 6d |nately t|he minim|
|000026f0| 75 6d 20 50 69 78 4d 61 | 70 20 72 6f 77 42 79 74 |um PixMa|p rowByt|
|00002700| 65 73 20 69 73 20 32 20 | 62 79 74 65 73 2c 20 73 |es is 2 |bytes, s|
|00002710| 6f 20 77 65 0d 09 09 09 | 73 71 75 65 65 7a 65 20 |o we....|squeeze |
|00002720| 6f 75 74 20 74 68 65 20 | 65 78 74 72 61 20 73 70 |out the |extra sp|
|00002730| 61 63 65 20 62 65 66 6f | 72 65 20 70 72 6f 63 65 |ace befo|re proce|
|00002740| 73 73 69 6e 67 0d 09 09 | 09 2a 2f 0d 09 09 09 73 |ssing...|.*/....s|
|00002750| 72 63 50 74 72 3d 20 28 | 75 6e 73 69 67 6e 65 64 |rcPtr= (|unsigned|
|00002760| 20 63 68 61 72 20 2a 29 | 20 73 72 63 54 6d 70 2e | char *)| srcTmp.|
|00002770| 62 61 73 65 41 64 64 72 | 3b 0d 09 09 09 64 73 74 |baseAddr|;....dst|
|00002780| 50 74 72 3d 20 28 75 6e | 73 69 67 6e 65 64 20 63 |Ptr= (un|signed c|
|00002790| 68 61 72 20 2a 29 20 73 | 72 63 54 6d 70 2e 62 61 |har *) s|rcTmp.ba|
|000027a0| 73 65 41 64 64 72 3b 0d | 09 09 09 66 6f 72 20 28 |seAddr;.|...for (|
|000027b0| 78 3d 30 3b 20 78 3c 73 | 72 63 4c 65 6e 67 74 68 |x=0; x<s|rcLength|
|000027c0| 3b 20 78 2b 2b 29 20 7b | 0d 09 09 09 09 2a 64 73 |; x++) {|.....*ds|
|000027d0| 74 50 74 72 2b 2b 20 3d | 20 2a 73 72 63 50 74 72 |tPtr++ =| *srcPtr|
|000027e0| 3b 0d 09 09 09 09 73 72 | 63 50 74 72 20 2b 3d 20 |;.....sr|cPtr += |
|000027f0| 32 3b 0d 09 09 09 7d 0d | 09 09 7d 0d 09 09 64 73 |2;....}.|..}...ds|
|00002800| 74 50 74 72 3d 20 28 75 | 6e 73 69 67 6e 65 64 20 |tPtr= (u|nsigned |
|00002810| 63 68 61 72 20 2a 29 20 | 64 73 74 54 6d 70 2e 62 |char *) |dstTmp.b|
|00002820| 61 73 65 41 64 64 72 3b | 0d 09 09 73 72 63 78 20 |aseAddr;|...srcx |
|00002830| 3d 20 73 72 63 4c 65 6e | 67 74 68 2f 32 20 2d 20 |= srcLen|gth/2 - |
|00002840| 64 69 6d 2f 32 20 2d 20 | 64 73 74 4c 65 6e 67 74 |dim/2 - |dstLengt|
|00002850| 68 2f 32 3b 0d 09 09 66 | 6f 72 20 28 78 3d 30 3b |h/2;...f|or (x=0;|
|00002860| 20 78 3c 64 73 74 4c 65 | 6e 67 74 68 3b 20 78 2b | x<dstLe|ngth; x+|
|00002870| 2b 29 20 7b 0d 09 09 09 | 69 6d 61 78 3d 64 69 6d |+) {....|imax=dim|
|00002880| 3b 0d 09 09 09 69 66 28 | 73 72 63 78 2b 64 69 6d |;....if(|srcx+dim|
|00002890| 3e 73 72 63 4c 65 6e 67 | 74 68 29 20 69 6d 61 78 |>srcLeng|th) imax|
|000028a0| 3d 73 72 63 4c 65 6e 67 | 74 68 2d 73 72 63 78 3b |=srcLeng|th-srcx;|
|000028b0| 0d 09 09 09 69 66 28 73 | 72 63 78 3c 30 29 7b 0d |....if(s|rcx<0){.|
|000028c0| 09 09 09 09 69 6d 69 6e | 3d 20 2d 73 72 63 78 3b |....imin|= -srcx;|
|000028d0| 0d 09 09 09 09 73 72 63 | 50 74 72 3d 28 75 6e 73 |.....src|Ptr=(uns|
|000028e0| 69 67 6e 65 64 20 63 68 | 61 72 20 2a 29 20 73 72 |igned ch|ar *) sr|
|000028f0| 63 54 6d 70 2e 62 61 73 | 65 41 64 64 72 3b 0d 09 |cTmp.bas|eAddr;..|
|00002900| 09 09 7d 0d 09 09 09 65 | 6c 73 65 20 7b 0d 09 09 |..}....e|lse {...|
|00002910| 09 09 69 6d 69 6e 3d 30 | 3b 0d 09 09 09 09 73 72 |..imin=0|;.....sr|
|00002920| 63 50 74 72 3d 28 75 6e | 73 69 67 6e 65 64 20 63 |cPtr=(un|signed c|
|00002930| 68 61 72 20 2a 29 20 73 | 72 63 54 6d 70 2e 62 61 |har *) s|rcTmp.ba|
|00002940| 73 65 41 64 64 72 2b 73 | 72 63 78 3b 0d 09 09 09 |seAddr+s|rcx;....|
|00002950| 7d 0d 09 09 09 66 50 74 | 72 3d 26 69 66 75 6e 5b |}....fPt|r=&ifun[|
|00002960| 69 6d 69 6e 5d 3b 0d 09 | 09 09 66 6f 72 20 28 74 |imin];..|..for (t|
|00002970| 3d 30 4c 2c 20 69 3d 69 | 6d 69 6e 3b 69 3c 69 6d |=0L, i=i|min;i<im|
|00002980| 61 78 3b 69 2b 2b 29 20 | 74 20 2b 3d 20 2a 66 50 |ax;i++) |t += *fP|
|00002990| 74 72 2b 2b 20 2a 20 28 | 6c 6f 6e 67 29 28 75 6e |tr++ * (|long)(un|
|000029a0| 73 69 67 6e 65 64 20 6c | 6f 6e 67 29 20 2a 73 72 |signed l|ong) *sr|
|000029b0| 63 50 74 72 2b 2b 3b 0d | 23 69 66 20 49 4d 50 52 |cPtr++;.|#if IMPR|
|000029c0| 4f 56 45 44 5f 52 4f 55 | 4e 44 49 4e 47 0d 09 09 |OVED_ROU|NDING...|
|000029d0| 09 69 66 28 74 3e 30 29 | 74 2b 3d 69 66 75 6e 53 |.if(t>0)|t+=ifunS|
|000029e0| 63 61 6c 65 3e 3e 31 3b | 09 09 2f 2f 20 72 6f 75 |cale>>1;|..// rou|
|000029f0| 6e 64 20 74 2f 69 66 75 | 6e 53 63 61 6c 65 20 74 |nd t/ifu|nScale t|
|00002a00| 6f 20 6e 65 61 72 65 73 | 74 20 69 6e 74 65 67 65 |o neares|t intege|
|00002a10| 72 0d 09 09 09 65 6c 73 | 65 20 74 2d 3d 69 66 75 |r....els|e t-=ifu|
|00002a20| 6e 53 63 61 6c 65 3e 3e | 31 3b 0d 23 65 6e 64 69 |nScale>>|1;.#endi|
|00002a30| 66 0d 09 09 09 74 2f 3d | 69 66 75 6e 53 63 61 6c |f....t/=|ifunScal|
|00002a40| 65 3b 0d 09 09 09 69 66 | 28 63 6f 6e 76 6f 6c 76 |e;....if|(convolv|
|00002a50| 65 58 29 7b 0d 09 09 09 | 09 2a 64 73 74 50 74 72 |eX){....|.*dstPtr|
|00002a60| 2b 2b 20 3d 20 28 75 6e | 73 69 67 6e 65 64 20 63 |++ = (un|signed c|
|00002a70| 68 61 72 29 20 74 3b 0d | 09 09 09 7d 65 6c 73 65 |har) t;.|...}else|
|00002a80| 7b 0d 09 09 09 09 2f 2a | 20 55 6e 66 6f 72 74 75 |{...../*| Unfortu|
|00002a90| 6e 61 74 65 6c 79 20 74 | 68 65 20 6d 69 6e 69 6d |nately t|he minim|
|00002aa0| 75 6d 20 50 69 78 4d 61 | 70 20 72 6f 77 42 79 74 |um PixMa|p rowByt|
|00002ab0| 65 73 20 69 73 20 32 20 | 62 79 74 65 73 2c 20 73 |es is 2 |bytes, s|
|00002ac0| 6f 20 77 65 0d 09 09 09 | 09 69 6e 73 65 72 74 20 |o we....|.insert |
|00002ad0| 61 20 73 70 61 63 65 20 | 62 65 74 77 65 65 6e 20 |a space |between |
|00002ae0| 70 69 78 65 6c 73 0d 09 | 09 09 09 2a 2f 0d 09 09 |pixels..|...*/...|
|00002af0| 09 09 2a 64 73 74 50 74 | 72 20 3d 20 28 75 6e 73 |..*dstPt|r = (uns|
|00002b00| 69 67 6e 65 64 20 63 68 | 61 72 29 20 74 3b 0d 09 |igned ch|ar) t;..|
|00002b10| 09 09 09 64 73 74 50 74 | 72 20 2b 3d 20 32 3b 0d |...dstPt|r += 2;.|
|00002b20| 09 09 09 7d 0d 09 09 09 | 73 72 63 78 2b 2b 3b 0d |...}....|srcx++;.|
|00002b30| 09 09 7d 0d 09 09 69 66 | 28 63 61 6e 33 32 29 53 |..}...if|(can32)S|
|00002b40| 77 61 70 4d 4d 55 4d 6f | 64 65 28 28 76 6f 69 64 |wapMMUMo|de((void|
|00002b50| 20 2a 29 26 6d 6d 75 4d | 6f 64 65 29 3b 0d 09 09 | *)&mmuM|ode);...|
|00002b60| 2f 2a 20 66 69 6e 61 6c | 6c 79 2c 20 63 6f 70 79 |/* final|ly, copy|
|00002b70| 20 74 68 65 20 6c 69 6e | 65 20 66 72 6f 6d 20 62 | the lin|e from b|
|00002b80| 75 66 66 65 72 20 64 73 | 74 54 6d 70 20 74 6f 20 |uffer ds|tTmp to |
|00002b90| 64 73 74 42 69 74 73 20 | 2a 2f 0d 09 09 69 66 28 |dstBits |*/...if(|
|00002ba0| 64 73 74 50 69 78 65 6c | 53 69 7a 65 20 3d 3d 20 |dstPixel|Size == |
|00002bb0| 64 73 74 54 6d 70 2e 70 | 69 78 65 6c 53 69 7a 65 |dstTmp.p|ixelSize|
|00002bc0| 29 0d 09 09 09 43 6f 70 | 79 42 69 74 73 51 75 69 |)....Cop|yBitsQui|
|00002bd0| 63 6b 6c 79 28 28 42 69 | 74 4d 61 70 20 2a 29 20 |ckly((Bi|tMap *) |
|00002be0| 26 64 73 74 54 6d 70 2c | 64 73 74 42 69 74 73 2c |&dstTmp,|dstBits,|
|00002bf0| 26 64 73 74 54 6d 70 2e | 62 6f 75 6e 64 73 2c 26 |&dstTmp.|bounds,&|
|00002c00| 64 73 74 52 65 63 74 2c | 73 72 63 43 6f 70 79 2c |dstRect,|srcCopy,|
|00002c10| 4e 55 4c 4c 29 3b 0d 09 | 09 65 6c 73 65 0d 09 09 |NULL);..|.else...|
|00002c20| 09 43 6f 70 79 42 69 74 | 73 28 28 42 69 74 4d 61 |.CopyBit|s((BitMa|
|00002c30| 70 20 2a 29 20 26 64 73 | 74 54 6d 70 2c 64 73 74 |p *) &ds|tTmp,dst|
|00002c40| 42 69 74 73 2c 26 64 73 | 74 54 6d 70 2e 62 6f 75 |Bits,&ds|tTmp.bou|
|00002c50| 6e 64 73 2c 26 64 73 74 | 52 65 63 74 2c 73 72 63 |nds,&dst|Rect,src|
|00002c60| 43 6f 70 79 2c 4e 55 4c | 4c 29 3b 0d 09 09 69 66 |Copy,NUL|L);...if|
|00002c70| 28 63 6f 6e 76 6f 6c 76 | 65 58 29 7b 0d 09 09 09 |(convolv|eX){....|
|00002c80| 4f 66 66 73 65 74 52 65 | 63 74 28 26 73 72 63 52 |OffsetRe|ct(&srcR|
|00002c90| 65 63 74 2c 30 2c 31 29 | 3b 09 2f 2a 20 61 64 6a |ect,0,1)|;./* adj|
|00002ca0| 75 73 74 20 52 65 63 74 | 73 20 74 6f 20 70 6f 69 |ust Rect|s to poi|
|00002cb0| 6e 74 20 74 6f 20 6e 65 | 78 74 20 6c 69 6e 65 20 |nt to ne|xt line |
|00002cc0| 2a 2f 0d 09 09 09 4f 66 | 66 73 65 74 52 65 63 74 |*/....Of|fsetRect|
|00002cd0| 28 26 64 73 74 52 65 63 | 74 2c 30 2c 31 29 3b 0d |(&dstRec|t,0,1);.|
|00002ce0| 09 09 7d 65 6c 73 65 7b | 0d 09 09 09 4f 66 66 73 |..}else{|....Offs|
|00002cf0| 65 74 52 65 63 74 28 26 | 73 72 63 52 65 63 74 2c |etRect(&|srcRect,|
|00002d00| 31 2c 30 29 3b 09 2f 2a | 20 61 64 6a 75 73 74 20 |1,0);./*| adjust |
|00002d10| 52 65 63 74 73 20 74 6f | 20 70 6f 69 6e 74 20 74 |Rects to| point t|
|00002d20| 6f 20 6e 65 78 74 20 6c | 69 6e 65 20 2a 2f 0d 09 |o next l|ine */..|
|00002d30| 09 09 4f 66 66 73 65 74 | 52 65 63 74 28 26 64 73 |..Offset|Rect(&ds|
|00002d40| 74 52 65 63 74 2c 31 2c | 30 29 3b 0d 09 09 7d 0d |tRect,1,|0);...}.|
|00002d50| 09 7d 0d 09 66 72 65 65 | 28 28 76 6f 69 64 20 2a |.}..free|((void *|
|00002d60| 29 20 69 66 75 6e 29 3b | 0d 09 66 72 65 65 28 28 |) ifun);|..free((|
|00002d70| 76 6f 69 64 20 2a 29 20 | 73 72 63 54 6d 70 2e 62 |void *) |srcTmp.b|
|00002d80| 61 73 65 41 64 64 72 29 | 3b 0d 09 66 72 65 65 28 |aseAddr)|;..free(|
|00002d90| 28 76 6f 69 64 20 2a 29 | 20 64 73 74 54 6d 70 2e |(void *)| dstTmp.|
|00002da0| 62 61 73 65 41 64 64 72 | 29 3b 0d 7d 0d 0d 09 00 |baseAddr|);.}....|
|00002db0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002dc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002dd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002de0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002df0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002e00| 00 00 01 00 00 00 03 12 | 00 00 02 12 00 00 00 7e |........|.......~|
|00002e10| 66 49 3e 3b 27 57 02 06 | 3c 7c 67 47 33 1b 77 53 |fI>;'W..|<|gG3.wS|
|00002e20| 6f 40 33 52 08 62 6c 4f | 2c 43 3b 02 7f 0e 14 45 |o@3R.blO|,C;....E|
|00002e30| 0b 43 6f 6e 76 6f 6c 76 | 65 58 2e 63 02 00 00 00 |.Convolv|eX.c....|
|00002e40| 54 45 58 54 43 57 49 45 | 01 00 00 50 00 c0 00 00 |TEXTCWIE|...P....|
|00002e50| 00 00 54 45 58 54 43 57 | 49 45 01 00 00 50 00 c0 |..TEXTCW|IE...P..|
|00002e60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002e70| 00 00 a0 5c 32 8a 00 00 | 2d 2f 00 00 03 90 71 2a |...\2...|-/....q*|
|00002e80| 6d 6a 70 70 1b 6f 67 30 | 0f 65 5d 7a 69 7f 03 73 |mjpp.og0|.e]zi..s|
|00002e90| 2e 7f 5e 1d 0c 09 3c 2f | 5f 36 23 2a 17 62 2e 2f |..^...</|_6#*.b./|
|00002ea0| 3f 2a 73 58 34 23 6e 7d | 5d 39 16 36 67 3d 08 08 |?*sX4#n}|]9.6g=..|
|00002eb0| 59 11 72 02 07 01 33 39 | 33 2d 51 74 62 19 33 71 |Y.r...39|3-Qtb.3q|
|00002ec0| 43 47 5b 7f 13 6f 69 02 | 6e 36 41 76 04 03 14 11 |CG[..oi.|n6Av....|
|00002ed0| 7f 3e 17 2a 2b 33 44 68 | 33 4f 59 78 69 76 7b 3b |.>.*+3Dh|3OYxiv{;|
|00002ee0| 7c 35 2b 3f 20 7e 7e 5b | 6a 38 3c 51 7d 52 58 58 ||5+? ~~[|j8<Q}RXX|
|00002ef0| 48 29 66 4d 68 58 09 18 | 6e 65 71 68 2d 48 6a 57 |H)fMhX..|neqh-HjW|
|00002f00| 00 00 00 8a 00 04 00 28 | 00 00 17 61 00 8f 00 5b |.......(|...a...[|
|00002f10| e7 c8 80 00 01 6c 00 04 | 01 d3 00 7c 94 20 00 00 |.....l..|...|. ..|
|00002f20| 00 00 00 00 09 6d 79 73 | 72 63 52 65 63 74 00 2a |.....mys|rcRect.*|
|00002f30| 00 00 17 7b 00 8f 00 5b | e7 54 80 00 01 6d 00 78 |...{...[|.T...m.x|
|00002f40| 01 d4 00 f0 94 20 00 00 | 00 00 00 00 0b 09 6d 79 |..... ..|......my|
|00002f50| 64 73 74 52 65 63 74 0d | 00 10 00 00 17 a5 00 90 |dstRect.|........|
|00002f60| 00 5b e6 f0 00 00 01 69 | 00 26 00 00 1c 03 00 ad |.[.....i|.&......|
|00002f70| 00 5b e6 d8 80 00 01 5a | 00 12 01 c1 02 42 94 20 |.[.....Z|.....B. |
|00002f80| 00 00 00 00 00 00 07 73 | 72 63 54 6d 70 20 00 00 |.......s|rcTmp ..|
|00002f90| 00 1e 00 29 00 07 01 80 | 02 4a 00 29 00 07 01 80 |...)....|.J.)....|
|00002fa0| 02 4a 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |.J......|........|
|00002fb0| 00 00 00 3a 00 03 00 00 | 0e 75 00 00 0e 7e 09 43 |...:....|.u...~.C|
|00002fc0| 6f 6e 76 6f 6c 76 65 58 | 00 00 0f c5 00 00 0f cf |onvolveX|........|
|00002fd0| 0b 43 6f 6e 76 6f 6c 76 | 65 58 59 00 00 00 0f 1d |.Convolv|eXY.....|
|00002fe0| 00 00 0f 26 09 43 6f 6e | 76 6f 6c 76 65 59 00 00 |...&.Con|volveY..|
|00002ff0| 00 cc 00 08 00 18 00 00 | 14 b7 00 78 00 50 f6 10 |........|...x.P..|
|00003000| 00 00 09 55 43 48 41 52 | 5f 4d 41 58 00 14 00 00 |...UCHAR|_MAX....|
|00003010| 14 84 00 77 00 50 f6 00 | 00 00 05 74 6d 61 78 20 |...w.P..|...tmax |
|00003020| 00 18 00 00 15 1e 00 7a | 00 50 f5 f0 10 02 09 69 |.......z|.P.....i|
|00003030| 66 75 6e 53 63 61 6c 65 | 00 14 00 00 15 3a 00 7b |funScale|.....:.{|
|00003040| 00 50 f5 e0 00 00 05 2a | 69 66 75 6e 00 14 00 00 |.P.....*|ifun....|
|00003050| 15 3a 00 7b 00 50 f5 c0 | 00 00 05 69 66 75 6e 20 |.:.{.P..|...ifun |
|00003060| 00 1a 00 00 15 3a 00 7b | 00 50 f5 b0 00 00 0b 69 |.....:.{|.P.....i|
|00003070| 66 75 6e 5b 64 69 6d 2f | 32 5d 00 1c 00 00 15 3a |fun[dim/|2].....:|
|00003080| 00 7b 00 50 f5 a0 00 00 | 0d 32 35 35 2a 69 66 75 |.{.P....|.255*ifu|
|00003090| 6e 53 63 61 6c 65 00 28 | 00 00 15 3a 00 7b 00 50 |nScale.(|...:.{.P|
|000030a0| f5 90 00 00 19 32 35 35 | 2a 69 66 75 6e 53 63 61 |.....255|*ifunSca|
|000030b0| 6c 65 2b 69 66 75 6e 53 | 63 61 6c 65 2f 32 00 00 |le+ifunS|cale/2..|
|000030c0| 00 48 00 09 4d 6f 6e 61 | 63 6f 00 00 00 00 00 00 |.H..Mona|co......|
|000030d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000030e0| 00 00 00 00 00 03 00 04 | 00 3e 00 04 01 7d 02 63 |........|.>...}.c|
|000030f0| 00 3e 00 04 01 7d 02 63 | ad 2c cc 17 00 00 06 53 |.>...}.c|.,.....S|
|00003100| 00 00 06 53 00 00 00 ca | 00 00 00 00 00 04 00 01 |...S....|........|
|00003110| 00 01 00 00 01 00 00 00 | 03 12 00 00 02 12 00 00 |........|........|
|00003120| 00 7e 01 b6 05 ac 18 9c | 00 00 00 1c 00 7e 00 02 |.~......|.....~..|
|00003130| 44 54 56 55 00 01 00 1a | 4d 50 53 52 00 02 00 32 |DTVU....|MPSR...2|
|00003140| 4d 57 42 42 00 00 00 56 | 78 48 ff ff 00 00 00 00 |MWBB...V|xH......|
|00003150| 00 00 00 00 2d 23 ff ff | 00 00 00 ee 00 00 00 00 |....-#..|........|
|00003160| 03 f0 ff ff 00 00 00 8e | 00 00 00 00 03 ef ff ff |........|........|
|00003170| 00 00 00 b0 00 00 00 00 | 03 ed ff ff 00 00 01 be |........|........|
|00003180| 00 00 00 00 03 f0 ff ff | 00 00 02 0a 00 00 00 00 |........|........|
|00003190| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000031a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000031b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000031c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000031d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000031e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000031f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+