home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: SHell self-extracting ARchive
(archive/shar).
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Newsgroup Content (archive/news)
| magic
| Supported |
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
100%
| dexvert
| Internet Message Format (text/imf)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| news or mail text
| default
| |
99%
| file
| C source, ASCII text
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
| |
100%
| xdgMime
| message/rfc822
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 53 75 62 6a 65 63 74 3a | 20 20 76 31 39 69 30 35 |Subject:| v19i05|
|00000010| 33 3a 20 20 46 42 4d 2c | 20 69 6d 61 67 65 20 6d |3: FBM,| image m|
|00000020| 61 6e 69 70 75 6c 61 74 | 69 6f 6e 20 6c 69 62 72 |anipulat|ion libr|
|00000030| 61 72 79 2c 20 50 61 72 | 74 30 37 2f 30 38 0a 4e |ary, Par|t07/08.N|
|00000040| 65 77 73 67 72 6f 75 70 | 73 3a 20 63 6f 6d 70 2e |ewsgroup|s: comp.|
|00000050| 73 6f 75 72 63 65 73 2e | 75 6e 69 78 0a 53 65 6e |sources.|unix.Sen|
|00000060| 64 65 72 3a 20 73 6f 75 | 72 63 65 73 0a 41 70 70 |der: sou|rces.App|
|00000070| 72 6f 76 65 64 3a 20 72 | 73 61 6c 7a 40 75 75 6e |roved: r|salz@uun|
|00000080| 65 74 2e 55 55 2e 4e 45 | 54 0a 0a 53 75 62 6d 69 |et.UU.NE|T..Submi|
|00000090| 74 74 65 64 2d 62 79 3a | 20 4d 69 63 68 61 65 6c |tted-by:| Michael|
|000000a0| 2e 4d 61 75 6c 64 69 6e | 40 4e 4c 2e 43 53 2e 43 |.Mauldin|@NL.CS.C|
|000000b0| 4d 55 2e 45 44 55 0a 50 | 6f 73 74 69 6e 67 2d 6e |MU.EDU.P|osting-n|
|000000c0| 75 6d 62 65 72 3a 20 56 | 6f 6c 75 6d 65 20 31 39 |umber: V|olume 19|
|000000d0| 2c 20 49 73 73 75 65 20 | 35 33 0a 41 72 63 68 69 |, Issue |53.Archi|
|000000e0| 76 65 2d 6e 61 6d 65 3a | 20 66 62 6d 2f 70 61 72 |ve-name:| fbm/par|
|000000f0| 74 30 37 0a 0a 23 21 20 | 2f 62 69 6e 2f 73 68 0a |t07..#! |/bin/sh.|
|00000100| 23 20 54 68 69 73 20 69 | 73 20 61 20 73 68 65 6c |# This i|s a shel|
|00000110| 6c 20 61 72 63 68 69 76 | 65 2e 20 20 52 65 6d 6f |l archiv|e. Remo|
|00000120| 76 65 20 61 6e 79 74 68 | 69 6e 67 20 62 65 66 6f |ve anyth|ing befo|
|00000130| 72 65 20 74 68 69 73 20 | 6c 69 6e 65 2c 20 74 68 |re this |line, th|
|00000140| 65 6e 20 75 6e 70 61 63 | 6b 0a 23 20 69 74 20 62 |en unpac|k.# it b|
|00000150| 79 20 73 61 76 69 6e 67 | 20 69 74 20 69 6e 74 6f |y saving| it into|
|00000160| 20 61 20 66 69 6c 65 20 | 61 6e 64 20 74 79 70 69 | a file |and typi|
|00000170| 6e 67 20 22 73 68 20 66 | 69 6c 65 22 2e 20 20 54 |ng "sh f|ile". T|
|00000180| 6f 20 6f 76 65 72 77 72 | 69 74 65 20 65 78 69 73 |o overwr|ite exis|
|00000190| 74 69 6e 67 0a 23 20 66 | 69 6c 65 73 2c 20 74 79 |ting.# f|iles, ty|
|000001a0| 70 65 20 22 73 68 20 66 | 69 6c 65 20 2d 63 22 2e |pe "sh f|ile -c".|
|000001b0| 20 20 59 6f 75 20 63 61 | 6e 20 61 6c 73 6f 20 66 | You ca|n also f|
|000001c0| 65 65 64 20 74 68 69 73 | 20 61 73 20 73 74 61 6e |eed this| as stan|
|000001d0| 64 61 72 64 20 69 6e 70 | 75 74 20 76 69 61 0a 23 |dard inp|ut via.#|
|000001e0| 20 75 6e 73 68 61 72 2c | 20 6f 72 20 62 79 20 74 | unshar,| or by t|
|000001f0| 79 70 69 6e 67 20 22 73 | 68 20 3c 66 69 6c 65 22 |yping "s|h <file"|
|00000200| 2c 20 65 2e 67 2e 2e 20 | 20 49 66 20 74 68 69 73 |, e.g.. | If this|
|00000210| 20 61 72 63 68 69 76 65 | 20 69 73 20 63 6f 6d 70 | archive| is comp|
|00000220| 6c 65 74 65 2c 20 79 6f | 75 0a 23 20 77 69 6c 6c |lete, yo|u.# will|
|00000230| 20 73 65 65 20 74 68 65 | 20 66 6f 6c 6c 6f 77 69 | see the| followi|
|00000240| 6e 67 20 6d 65 73 73 61 | 67 65 20 61 74 20 74 68 |ng messa|ge at th|
|00000250| 65 20 65 6e 64 3a 0a 23 | 09 09 22 45 6e 64 20 6f |e end:.#|.."End o|
|00000260| 66 20 61 72 63 68 69 76 | 65 20 37 20 28 6f 66 20 |f archiv|e 7 (of |
|00000270| 38 29 2e 22 0a 23 20 43 | 6f 6e 74 65 6e 74 73 3a |8).".# C|ontents:|
|00000280| 20 20 66 62 68 61 6d 2e | 63 20 66 6c 67 69 66 72 | fbham.|c flgifr|
|00000290| 2e 63 20 66 6c 69 66 66 | 2e 63 0a 23 20 57 72 61 |.c fliff|.c.# Wra|
|000002a0| 70 70 65 64 20 62 79 20 | 72 73 61 6c 7a 40 66 69 |pped by |rsalz@fi|
|000002b0| 67 2e 62 62 6e 2e 63 6f | 6d 20 6f 6e 20 46 72 69 |g.bbn.co|m on Fri|
|000002c0| 20 4a 75 6e 20 20 39 20 | 30 38 3a 33 38 3a 32 39 | Jun 9 |08:38:29|
|000002d0| 20 31 39 38 39 0a 50 41 | 54 48 3d 2f 62 69 6e 3a | 1989.PA|TH=/bin:|
|000002e0| 2f 75 73 72 2f 62 69 6e | 3a 2f 75 73 72 2f 75 63 |/usr/bin|:/usr/uc|
|000002f0| 62 20 3b 20 65 78 70 6f | 72 74 20 50 41 54 48 0a |b ; expo|rt PATH.|
|00000300| 69 66 20 74 65 73 74 20 | 2d 66 20 27 66 62 68 61 |if test |-f 'fbha|
|00000310| 6d 2e 63 27 20 2d 61 20 | 22 24 7b 31 7d 22 20 21 |m.c' -a |"${1}" !|
|00000320| 3d 20 22 2d 63 22 20 3b | 20 74 68 65 6e 20 0a 20 |= "-c" ;| then . |
|00000330| 20 65 63 68 6f 20 73 68 | 61 72 3a 20 57 69 6c 6c | echo sh|ar: Will|
|00000340| 20 6e 6f 74 20 63 6c 6f | 62 62 65 72 20 65 78 69 | not clo|bber exi|
|00000350| 73 74 69 6e 67 20 66 69 | 6c 65 20 5c 22 27 66 62 |sting fi|le \"'fb|
|00000360| 68 61 6d 2e 63 27 5c 22 | 0a 65 6c 73 65 0a 65 63 |ham.c'\"|.else.ec|
|00000370| 68 6f 20 73 68 61 72 3a | 20 45 78 74 72 61 63 74 |ho shar:| Extract|
|00000380| 69 6e 67 20 5c 22 27 66 | 62 68 61 6d 2e 63 27 5c |ing \"'f|bham.c'\|
|00000390| 22 20 5c 28 31 34 37 36 | 35 20 63 68 61 72 61 63 |" \(1476|5 charac|
|000003a0| 74 65 72 73 5c 29 0a 73 | 65 64 20 22 73 2f 5e 58 |ters\).s|ed "s/^X|
|000003b0| 2f 2f 22 20 3e 27 66 62 | 68 61 6d 2e 63 27 20 3c |//" >'fb|ham.c' <|
|000003c0| 3c 27 45 4e 44 5f 4f 46 | 5f 46 49 4c 45 27 0a 58 |<'END_OF|_FILE'.X|
|000003d0| 2f 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |/*******|********|
|000003e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000003f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000400| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000410| 2a 2a 0a 58 20 2a 20 66 | 62 68 61 6d 2e 63 3a 20 |**.X * f|bham.c: |
|00000420| 46 42 4d 20 4c 69 62 72 | 61 72 79 20 30 2e 39 34 |FBM Libr|ary 0.94|
|00000430| 20 28 42 65 74 61 20 74 | 65 73 74 29 20 32 30 2d | (Beta t|est) 20-|
|00000440| 4d 61 79 2d 38 39 20 20 | 4d 69 63 68 61 65 6c 20 |May-89 |Michael |
|00000450| 4d 61 75 6c 64 69 6e 0a | 58 20 2a 0a 58 20 2a 20 |Mauldin.|X *.X * |
|00000460| 66 62 68 61 6d 2e 63 3a | 20 57 72 69 74 65 20 61 |fbham.c:| Write a|
|00000470| 20 32 34 62 69 74 20 52 | 47 42 20 66 69 6c 65 20 | 24bit R|GB file |
|00000480| 61 73 20 61 6e 20 41 6d | 69 67 61 20 48 41 4d 20 |as an Am|iga HAM |
|00000490| 49 46 46 20 66 69 6c 65 | 0a 58 20 2a 0a 58 20 2a |IFF file|.X *.X *|
|000004a0| 20 55 53 41 47 45 0a 58 | 20 2a 20 20 20 20 20 25 | USAGE.X| * %|
|000004b0| 20 66 62 68 61 6d 20 3c | 20 69 6d 61 67 65 31 20 | fbham <| image1 |
|000004c0| 3e 20 69 6d 61 67 65 32 | 0a 58 20 2a 0a 58 20 2a |> image2|.X *.X *|
|000004d0| 20 45 44 49 54 4c 4f 47 | 0a 58 20 2a 09 4c 61 73 | EDITLOG|.X *.Las|
|000004e0| 74 45 64 69 74 44 61 74 | 65 20 3d 20 53 61 74 20 |tEditDat|e = Sat |
|000004f0| 4d 61 79 20 32 30 20 31 | 39 3a 31 35 3a 30 38 20 |May 20 1|9:15:08 |
|00000500| 31 39 38 39 20 2d 20 4d | 69 63 68 61 65 6c 20 4d |1989 - M|ichael M|
|00000510| 61 75 6c 64 69 6e 0a 58 | 20 2a 09 4c 61 73 74 46 |auldin.X| *.LastF|
|00000520| 69 6c 65 4e 61 6d 65 20 | 3d 20 2f 75 73 72 32 2f |ileName |= /usr2/|
|00000530| 6d 6c 6d 2f 73 72 63 2f | 6d 69 73 63 2f 66 62 6d |mlm/src/|misc/fbm|
|00000540| 2f 66 62 68 61 6d 2e 63 | 0a 58 20 2a 0a 58 20 2a |/fbham.c|.X *.X *|
|00000550| 20 48 49 53 54 4f 52 59 | 0a 58 20 2a 20 32 30 2d | HISTORY|.X * 20-|
|00000560| 4d 61 79 2d 38 39 20 20 | 4d 69 63 68 61 65 6c 20 |May-89 |Michael |
|00000570| 4d 61 75 6c 64 69 6e 20 | 28 6d 6c 6d 29 20 61 74 |Mauldin |(mlm) at|
|00000580| 20 43 61 72 6e 65 67 69 | 65 20 4d 65 6c 6c 6f 6e | Carnegi|e Mellon|
|00000590| 20 55 6e 69 76 65 72 73 | 69 74 79 0a 58 20 2a 09 | Univers|ity.X *.|
|000005a0| 42 65 74 61 20 72 65 6c | 65 61 73 65 20 28 76 65 |Beta rel|ease (ve|
|000005b0| 72 73 69 6f 6e 20 30 2e | 39 34 29 20 6d 6c 6d 40 |rsion 0.|94) mlm@|
|000005c0| 63 73 2e 63 6d 75 2e 65 | 64 75 0a 58 20 2a 0a 58 |cs.cmu.e|du.X *.X|
|000005d0| 20 2a 20 32 30 2d 41 70 | 72 2d 38 39 20 20 43 2e | * 20-Ap|r-89 C.|
|000005e0| 20 48 61 72 61 6c 64 20 | 4b 6f 63 68 20 28 63 68 | Harald |Koch (ch|
|000005f0| 6b 29 20 61 74 20 44 43 | 49 45 4d 20 54 6f 72 6f |k) at DC|IEM Toro|
|00000600| 6e 74 6f 2e 0a 58 20 2a | 20 20 20 20 20 43 72 65 |nto..X *| Cre|
|00000610| 61 74 65 64 2e 20 20 63 | 68 6b 40 62 65 6e 2e 64 |ated. c|hk@ben.d|
|00000620| 63 69 65 6d 2e 64 6e 64 | 2e 63 61 0a 58 20 2a 0a |ciem.dnd|.ca.X *.|
|00000630| 58 20 2a 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |X *=====|========|
|00000640| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000650| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000660| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000670| 3d 3d 3d 0a 58 20 2a 20 | 62 61 73 65 64 20 6f 6e |===.X * |based on|
|00000680| 20 72 61 79 32 2e 63 20 | 66 72 6f 6d 20 44 42 57 | ray2.c |from DBW|
|00000690| 5f 52 65 6e 64 65 72 2c | 20 43 6f 70 79 72 69 67 |_Render,| Copyrig|
|000006a0| 68 74 20 31 39 38 37 20 | 44 61 76 69 64 20 42 2e |ht 1987 |David B.|
|000006b0| 20 57 65 63 6b 65 72 0a | 58 20 2a 0a 58 20 2a 20 | Wecker.|X *.X * |
|000006c0| 46 72 6f 6d 3a 20 63 68 | 6b 40 64 72 65 74 6f 72 |From: ch|k@dretor|
|000006d0| 2e 64 63 69 65 6d 2e 64 | 6e 64 2e 63 61 20 28 43 |.dciem.d|nd.ca (C|
|000006e0| 2e 20 48 61 72 61 6c 64 | 20 4b 6f 63 68 29 0a 58 |. Harald| Koch).X|
|000006f0| 20 2a 20 53 75 62 6a 65 | 63 74 3a 20 66 62 68 61 | * Subje|ct: fbha|
|00000700| 6d 2e 63 20 2d 20 63 6f | 6e 76 65 72 74 20 61 20 |m.c - co|nvert a |
|00000710| 32 34 62 69 74 20 46 42 | 4d 20 66 69 6c 65 20 74 |24bit FB|M file t|
|00000720| 6f 20 61 6e 20 49 46 46 | 20 66 69 6c 65 20 75 73 |o an IFF| file us|
|00000730| 69 6e 67 20 48 41 4d 20 | 6d 6f 64 65 0a 58 20 2a |ing HAM |mode.X *|
|00000740| 20 54 6f 3a 20 4d 69 63 | 68 61 65 6c 2e 4d 61 75 | To: Mic|hael.Mau|
|00000750| 6c 64 69 6e 40 6e 6c 2e | 63 73 2e 63 6d 75 2e 65 |ldin@nl.|cs.cmu.e|
|00000760| 64 75 20 28 4d 69 63 68 | 61 65 6c 20 4d 61 75 64 |du (Mich|ael Maud|
|00000770| 6c 69 6e 29 0a 58 20 2a | 20 44 61 74 65 3a 20 4d |lin).X *| Date: M|
|00000780| 6f 6e 2c 20 31 20 4d 61 | 79 20 38 39 20 31 37 3a |on, 1 Ma|y 89 17:|
|00000790| 32 31 3a 31 36 20 45 44 | 54 0a 58 20 2a 20 58 2d |21:16 ED|T.X * X-|
|000007a0| 4d 61 69 6c 65 72 3a 20 | 45 4c 4d 20 5b 76 65 72 |Mailer: |ELM [ver|
|000007b0| 73 69 6f 6e 20 32 2e 32 | 20 50 4c 30 5d 0a 58 20 |sion 2.2| PL0].X |
|000007c0| 2a 20 0a 58 20 2a 20 54 | 68 69 73 20 69 73 20 74 |* .X * T|his is t|
|000007d0| 68 65 20 73 6f 75 72 63 | 65 20 74 6f 20 6d 79 20 |he sourc|e to my |
|000007e0| 70 72 6f 67 72 61 6d 20 | 74 6f 20 63 6f 6e 76 65 |program |to conve|
|000007f0| 72 74 20 66 72 6f 6d 20 | 61 20 32 34 62 69 74 20 |rt from |a 24bit |
|00000800| 46 42 4d 20 66 69 6c 65 | 20 74 6f 20 41 6d 69 67 |FBM file| to Amig|
|00000810| 61 0a 58 20 2a 20 48 41 | 4d 20 6d 6f 64 65 2e 20 |a.X * HA|M mode. |
|00000820| 49 74 20 69 73 20 62 61 | 73 65 64 20 6f 6e 20 44 |It is ba|sed on D|
|00000830| 61 76 65 20 57 65 63 6b | 65 72 27 73 20 52 41 59 |ave Weck|er's RAY|
|00000840| 32 20 70 72 6f 67 72 61 | 6d 2c 20 77 68 69 63 68 |2 progra|m, which|
|00000850| 20 63 6f 6e 76 65 72 74 | 73 20 74 68 65 0a 58 20 | convert|s the.X |
|00000860| 2a 20 6f 75 74 70 75 74 | 20 6f 66 20 68 69 73 20 |* output| of his |
|00000870| 72 61 79 74 72 61 63 65 | 72 20 74 6f 20 48 41 4d |raytrace|r to HAM|
|00000880| 20 6d 6f 64 65 2e 20 48 | 69 73 20 63 6f 64 65 20 | mode. H|is code |
|00000890| 75 73 65 73 20 74 68 65 | 20 41 6d 69 67 61 20 67 |uses the| Amiga g|
|000008a0| 72 61 70 68 69 63 73 0a | 58 20 2a 20 6c 69 62 72 |raphics.|X * libr|
|000008b0| 61 72 79 20 74 6f 20 70 | 6c 6f 74 20 74 68 65 20 |ary to p|lot the |
|000008c0| 70 69 78 65 6c 73 20 69 | 6e 20 61 20 66 72 61 6d |pixels i|n a fram|
|000008d0| 65 62 75 66 66 65 72 20 | 66 6f 72 20 65 6e 63 6f |ebuffer |for enco|
|000008e0| 64 69 6e 67 3b 20 74 68 | 69 73 20 76 65 72 73 69 |ding; th|is versi|
|000008f0| 6f 6e 20 77 69 6c 6c 0a | 58 20 2a 20 72 75 6e 20 |on will.|X * run |
|00000900| 73 74 61 6e 64 61 6c 6f | 6e 65 2e 0a 58 20 2a 20 |standalo|ne..X * |
|00000910| 0a 58 20 2a 20 54 68 65 | 72 65 20 6d 61 79 20 62 |.X * The|re may b|
|00000920| 65 20 62 75 67 73 2c 20 | 61 6c 74 68 6f 75 67 68 |e bugs, |although|
|00000930| 20 69 74 20 77 6f 72 6b | 73 20 77 65 6c 6c 20 66 | it work|s well f|
|00000940| 6f 72 20 6d 65 20 68 65 | 72 65 2e 20 49 74 20 69 |or me he|re. It i|
|00000950| 73 20 70 72 6f 62 61 62 | 6c 79 20 6e 6f 74 20 69 |s probab|ly not i|
|00000960| 6e 0a 58 20 2a 20 74 68 | 65 20 66 6f 72 6d 61 74 |n.X * th|e format|
|00000970| 20 79 6f 75 20 77 61 6e | 74 20 66 6f 72 20 46 42 | you wan|t for FB|
|00000980| 4d 20 73 6f 75 72 63 65 | 3b 20 50 6c 65 61 73 65 |M source|; Please|
|00000990| 20 67 6f 20 61 68 65 61 | 64 20 61 6e 64 20 6d 6f | go ahea|d and mo|
|000009a0| 64 69 66 79 20 69 74 2e | 20 54 68 65 72 65 20 69 |dify it.| There i|
|000009b0| 73 0a 58 20 2a 20 70 72 | 6f 62 61 62 6c 79 20 72 |s.X * pr|obably r|
|000009c0| 6f 6f 6d 20 66 6f 72 20 | 73 6f 6d 65 20 63 6f 6d |oom for |some com|
|000009d0| 6d 61 6e 64 20 6c 69 6e | 65 20 6f 70 74 69 6f 6e |mand lin|e option|
|000009e0| 73 20 66 6f 72 20 76 61 | 72 69 6f 75 73 20 74 68 |s for va|rious th|
|000009f0| 69 6e 67 73 20 28 73 75 | 63 68 20 61 73 20 74 68 |ings (su|ch as th|
|00000a00| 65 0a 58 20 2a 20 76 65 | 72 62 6f 73 65 20 6f 75 |e.X * ve|rbose ou|
|00000a10| 74 70 75 74 2c 20 72 75 | 6e 20 6c 65 6e 67 74 68 |tput, ru|n length|
|00000a20| 20 65 6e 63 6f 64 69 6e | 67 2c 20 65 74 63 29 20 | encodin|g, etc) |
|00000a30| 77 68 69 63 68 20 49 20 | 68 61 76 65 6e 27 74 20 |which I |haven't |
|00000a40| 6e 65 65 64 65 64 20 61 | 6e 64 20 73 6f 0a 58 20 |needed a|nd so.X |
|00000a50| 2a 20 68 61 76 65 6e 27 | 74 20 61 64 64 65 64 2e |* haven'|t added.|
|00000a60| 0a 58 20 2a 20 0a 58 20 | 2a 20 49 20 77 69 6c 6c |.X * .X |* I will|
|00000a70| 20 73 65 6e 64 20 79 6f | 75 20 74 68 65 20 49 52 | send yo|u the IR|
|00000a80| 49 53 20 70 72 6f 67 72 | 61 6d 73 20 77 68 65 6e |IS progr|ams when|
|00000a90| 20 49 20 67 65 74 20 74 | 68 65 6d 2e 20 45 6e 6a | I get t|hem. Enj|
|00000aa0| 6f 79 21 0a 58 20 2a 09 | 2d 63 68 6b 0a 58 20 2a |oy!.X *.|-chk.X *|
|00000ab0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000ac0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000ad0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000ae0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000af0| 2f 0a 58 0a 58 23 69 6e | 63 6c 75 64 65 20 3c 73 |/.X.X#in|clude <s|
|00000b00| 74 64 69 6f 2e 68 3e 0a | 58 23 69 6e 63 6c 75 64 |tdio.h>.|X#includ|
|00000b10| 65 20 3c 6d 61 74 68 2e | 68 3e 0a 58 23 69 6e 63 |e <math.|h>.X#inc|
|00000b20| 6c 75 64 65 20 22 66 62 | 6d 2e 68 22 0a 58 0a 58 |lude "fb|m.h".X.X|
|00000b30| 23 20 64 65 66 69 6e 65 | 20 55 53 41 47 45 20 22 |# define| USAGE "|
|00000b40| 55 73 61 67 65 3a 20 66 | 62 68 61 6d 20 3c 20 69 |Usage: f|bham < i|
|00000b50| 6d 61 67 65 20 3e 20 69 | 6d 61 67 65 22 0a 58 0a |mage > i|mage".X.|
|00000b60| 58 23 69 66 6e 64 65 66 | 20 6c 69 6e 74 0a 58 73 |X#ifndef| lint.Xs|
|00000b70| 74 61 74 69 63 20 63 68 | 61 72 20 20 20 20 2a 66 |tatic ch|ar *f|
|00000b80| 62 6d 69 64 20 3d 20 0a | 58 22 24 46 42 4d 20 66 |bmid = .|X"$FBM f|
|00000b90| 62 68 61 6d 2e 63 20 3c | 30 2e 39 33 3e 20 30 33 |bham.c <|0.93> 03|
|00000ba0| 2d 4d 61 79 2d 38 39 20 | 20 28 43 29 20 31 39 38 |-May-89 | (C) 198|
|00000bb0| 39 20 62 79 20 43 2e 20 | 48 61 72 61 6c 64 20 4b |9 by C. |Harald K|
|00000bc0| 6f 63 68 24 22 3b 0a 58 | 23 65 6e 64 69 66 0a 58 |och$";.X|#endif.X|
|00000bd0| 0a 58 23 64 65 66 69 6e | 65 20 44 45 50 54 48 09 |.X#defin|e DEPTH.|
|00000be0| 20 20 20 20 36 09 09 2f | 2a 20 6d 61 78 20 64 65 | 6../|* max de|
|00000bf0| 70 74 68 20 6f 66 20 41 | 6d 69 67 61 20 48 41 4d |pth of A|miga HAM|
|00000c00| 20 69 6d 61 67 65 20 2a | 2f 0a 58 0a 58 23 64 65 | image *|/.X.X#de|
|00000c10| 66 69 6e 65 20 42 4d 48 | 44 73 69 7a 65 20 20 20 |fine BMH|Dsize |
|00000c20| 20 32 30 4c 09 09 2f 2a | 20 63 68 75 6e 6b 20 73 | 20L../*| chunk s|
|00000c30| 69 7a 65 73 20 2a 2f 0a | 58 23 64 65 66 69 6e 65 |izes */.|X#define|
|00000c40| 20 43 4d 41 50 73 69 7a | 65 20 20 20 20 39 36 4c | CMAPsiz|e 96L|
|00000c50| 0a 58 23 64 65 66 69 6e | 65 20 43 41 4d 47 73 69 |.X#defin|e CAMGsi|
|00000c60| 7a 65 20 20 20 20 34 4c | 0a 58 23 64 65 66 69 6e |ze 4L|.X#defin|
|00000c70| 65 20 42 4f 44 59 73 69 | 7a 65 20 20 20 20 28 28 |e BODYsi|ze ((|
|00000c80| 6c 6f 6e 67 29 28 31 36 | 30 30 30 4c 29 29 0a 58 |long)(16|000L)).X|
|00000c90| 23 64 65 66 69 6e 65 20 | 46 4f 52 4d 73 69 7a 65 |#define |FORMsize|
|00000ca0| 20 20 20 20 28 42 4f 44 | 59 73 69 7a 65 2b 43 41 | (BOD|Ysize+CA|
|00000cb0| 4d 47 73 69 7a 65 2b 43 | 4d 41 50 73 69 7a 65 2b |MGsize+C|MAPsize+|
|00000cc0| 42 4d 48 44 73 69 7a 65 | 2b 33 36 4c 29 0a 58 0a |BMHDsize|+36L).X.|
|00000cd0| 58 75 6e 73 69 67 6e 65 | 64 20 63 68 61 72 20 2a |Xunsigne|d char *|
|00000ce0| 70 6c 61 6e 65 73 5b 44 | 45 50 54 48 5d 3b 09 2f |planes[D|EPTH];./|
|00000cf0| 2a 20 62 69 74 70 6c 61 | 6e 65 20 70 6f 69 6e 74 |* bitpla|ne point|
|00000d00| 65 72 73 20 2a 2f 0a 58 | 0a 58 73 74 61 74 69 63 |ers */.X|.Xstatic|
|00000d10| 20 69 6e 74 20 20 20 20 | 20 20 63 6f 6d 70 20 3d | int | comp =|
|00000d20| 20 31 3b 09 2f 2a 20 63 | 6f 6d 70 72 65 73 73 20 | 1;./* c|ompress |
|00000d30| 69 6d 61 67 65 3f 20 2a | 2f 0a 58 73 74 61 74 69 |image? *|/.Xstati|
|00000d40| 63 20 69 6e 74 20 20 20 | 20 20 20 64 65 70 74 68 |c int | depth|
|00000d50| 20 3d 20 44 45 50 54 48 | 3b 09 2f 2a 20 64 65 70 | = DEPTH|;./* dep|
|00000d60| 74 68 20 6f 66 20 69 6d | 61 67 65 20 62 65 69 6e |th of im|age bein|
|00000d70| 67 20 63 72 65 61 74 65 | 64 20 2a 2f 0a 58 73 74 |g create|d */.Xst|
|00000d80| 61 74 69 63 20 69 6e 74 | 20 20 20 20 20 20 63 6f |atic int| co|
|00000d90| 6c 6f 72 73 20 3d 20 31 | 36 3b 09 2f 2a 20 6e 75 |lors = 1|6;./* nu|
|00000da0| 6d 62 65 72 20 6f 66 20 | 63 6f 6c 6f 72 73 20 69 |mber of |colors i|
|00000db0| 6e 20 63 6f 6c 6f 72 20 | 6c 6f 6f 6b 75 70 20 74 |n color |lookup t|
|00000dc0| 61 62 6c 65 20 2a 2f 0a | 58 73 74 61 74 69 63 20 |able */.|Xstatic |
|00000dd0| 69 6e 74 20 20 20 20 20 | 20 63 6f 6c 6f 72 73 74 |int | colorst|
|00000de0| 61 74 73 5b 34 30 39 36 | 5d 5b 32 5d 3b 09 2f 2a |ats[4096|][2];./*|
|00000df0| 20 63 6f 6c 6f 72 20 75 | 73 61 67 65 20 73 74 61 | color u|sage sta|
|00000e00| 74 69 73 74 69 63 73 20 | 2a 2f 0a 58 73 74 61 74 |tistics |*/.Xstat|
|00000e10| 69 63 20 69 6e 74 09 72 | 6f 77 5f 73 69 7a 65 3b |ic int.r|ow_size;|
|00000e20| 09 2f 2a 20 6e 75 6d 62 | 65 72 20 6f 66 20 62 79 |./* numb|er of by|
|00000e30| 74 65 73 20 69 6e 20 49 | 46 46 20 72 6f 77 20 6f |tes in I|FF row o|
|00000e40| 66 20 64 61 74 61 20 2a | 2f 0a 58 0a 58 2f 2a 20 |f data *|/.X.X/* |
|00000e50| 74 65 6d 70 20 76 61 72 | 69 61 62 6c 65 73 20 66 |temp var|iables f|
|00000e60| 6f 72 20 77 72 69 74 69 | 6e 67 20 49 46 46 20 66 |or writi|ng IFF f|
|00000e70| 69 6c 65 20 2a 2f 0a 58 | 63 68 61 72 20 20 20 20 |ile */.X|char |
|00000e80| 20 20 20 20 20 20 20 20 | 73 74 72 5b 34 30 5d 3b | |str[40];|
|00000e90| 0a 58 6c 6f 6e 67 20 20 | 20 20 20 20 20 20 20 20 |.Xlong | |
|00000ea0| 20 20 6c 6e 67 2c 20 70 | 6f 73 31 2c 20 70 6f 73 | lng, p|os1, pos|
|00000eb0| 32 3b 0a 58 73 68 6f 72 | 74 20 20 20 20 20 20 20 |2;.Xshor|t |
|00000ec0| 20 20 20 20 77 72 64 3b | 0a 58 75 6e 73 69 67 6e | wrd;|.Xunsign|
|00000ed0| 65 64 20 63 68 61 72 20 | 20 20 62 79 74 3b 0a 58 |ed char | byt;.X|
|00000ee0| 75 6e 73 69 67 6e 65 64 | 20 63 68 61 72 20 20 2a |unsigned| char *|
|00000ef0| 64 65 73 74 2c 20 64 65 | 73 74 62 75 66 5b 42 55 |dest, de|stbuf[BU|
|00000f00| 46 53 49 5a 5d 3b 0a 58 | 0a 58 0a 58 6d 61 69 6e |FSIZ];.X|.X.Xmain|
|00000f10| 28 61 72 67 63 2c 20 61 | 72 67 76 29 0a 58 63 68 |(argc, a|rgv).Xch|
|00000f20| 61 72 20 20 20 20 20 20 | 20 20 20 20 20 2a 61 72 |ar | *ar|
|00000f30| 67 76 5b 5d 3b 0a 58 7b | 0a 58 20 20 20 20 46 42 |gv[];.X{|.X FB|
|00000f40| 4d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 69 6e |M | in|
|00000f50| 70 75 74 3b 0a 58 0a 58 | 20 20 20 20 2f 2a 20 43 |put;.X.X| /* C|
|00000f60| 6c 65 61 72 20 74 68 65 | 20 6d 65 6d 6f 72 79 20 |lear the| memory |
|00000f70| 70 6f 69 6e 74 65 72 73 | 20 73 6f 20 61 6c 6c 6f |pointers| so allo|
|00000f80| 63 5f 66 62 6d 20 77 6f | 6e 27 74 20 62 65 20 63 |c_fbm wo|n't be c|
|00000f90| 6f 6e 66 75 73 65 64 20 | 2a 2f 0a 58 20 20 20 20 |onfused |*/.X |
|00000fa0| 69 6e 70 75 74 2e 63 6d | 20 3d 20 69 6e 70 75 74 |input.cm| = input|
|00000fb0| 2e 62 6d 20 3d 20 28 75 | 6e 73 69 67 6e 65 64 20 |.bm = (u|nsigned |
|00000fc0| 63 68 61 72 20 2a 29 20 | 4e 55 4c 4c 3b 0a 58 0a |char *) |NULL;.X.|
|00000fd0| 58 20 20 20 20 2f 2a 20 | 52 65 61 64 20 74 68 65 |X /* |Read the|
|00000fe0| 20 69 6d 61 67 65 20 61 | 6e 64 20 72 6f 74 61 74 | image a|nd rotat|
|00000ff0| 65 20 69 74 20 2a 2f 0a | 58 20 20 20 20 69 66 20 |e it */.|X if |
|00001000| 28 21 72 65 61 64 5f 62 | 69 74 6d 61 70 28 26 69 |(!read_b|itmap(&i|
|00001010| 6e 70 75 74 2c 20 61 72 | 67 63 20 3e 20 30 20 3f |nput, ar|gc > 0 ?|
|00001020| 20 61 72 67 76 5b 31 5d | 20 3a 20 28 63 68 61 72 | argv[1]| : (char|
|00001030| 20 2a 29 20 4e 55 4c 4c | 29 29 0a 58 20 20 20 20 | *) NULL|)).X |
|00001040| 7b 0a 58 09 65 78 69 74 | 28 31 29 3b 0a 58 20 20 |{.X.exit|(1);.X |
|00001050| 20 20 7d 0a 58 0a 58 20 | 20 20 20 2f 2a 20 73 6c | }.X.X | /* sl|
|00001060| 69 67 68 74 20 73 61 6e | 69 74 79 20 63 68 65 63 |ight san|ity chec|
|00001070| 6b 73 2e 20 63 6f 75 6c | 64 20 62 65 20 62 65 74 |ks. coul|d be bet|
|00001080| 74 65 72 2e 20 2a 2f 0a | 58 20 20 20 20 69 66 20 |ter. */.|X if |
|00001090| 28 69 6e 70 75 74 2e 68 | 64 72 2e 70 68 79 73 62 |(input.h|dr.physb|
|000010a0| 69 74 73 20 21 3d 20 38 | 20 7c 7c 20 69 6e 70 75 |its != 8| || inpu|
|000010b0| 74 2e 68 64 72 2e 70 6c | 61 6e 65 73 20 21 3d 20 |t.hdr.pl|anes != |
|000010c0| 33 29 20 7b 0a 58 09 66 | 70 72 69 6e 74 66 28 73 |3) {.X.f|printf(s|
|000010d0| 74 64 65 72 72 2c 20 22 | 69 6e 70 75 74 20 66 69 |tderr, "|input fi|
|000010e0| 6c 65 20 6d 75 73 74 20 | 62 65 20 32 34 20 62 69 |le must |be 24 bi|
|000010f0| 74 20 52 47 42 20 64 61 | 74 61 5c 6e 22 29 3b 0a |t RGB da|ta\n");.|
|00001100| 58 09 65 78 69 74 28 31 | 29 3b 0a 58 20 20 20 20 |X.exit(1|);.X |
|00001110| 7d 0a 58 0a 58 20 20 20 | 20 2f 2a 20 63 6f 6e 76 |}.X.X | /* conv|
|00001120| 65 72 74 20 74 6f 20 48 | 41 4d 20 2a 2f 0a 58 20 |ert to H|AM */.X |
|00001130| 20 20 20 69 66 20 28 21 | 66 62 6d 32 68 61 6d 28 | if (!|fbm2ham(|
|00001140| 26 69 6e 70 75 74 2c 20 | 73 74 64 6f 75 74 29 29 |&input, |stdout))|
|00001150| 20 7b 0a 58 09 65 78 69 | 74 28 31 29 3b 0a 58 20 | {.X.exi|t(1);.X |
|00001160| 20 20 20 7d 0a 58 0a 58 | 20 20 20 20 65 78 69 74 | }.X.X| exit|
|00001170| 28 30 29 3b 0a 58 7d 0a | 58 0a 58 0a 58 2f 2a 2a |(0);.X}.|X.X.X/**|
|00001180| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001190| 2a 2a 2a 2a 2a 2a 20 72 | 75 6e 20 6c 65 6e 67 74 |****** r|un lengt|
|000011a0| 68 20 65 6e 63 6f 64 69 | 6e 67 20 66 72 6f 6d 20 |h encodi|ng from |
|000011b0| 41 6d 69 67 61 20 52 4b | 4d 20 2a 2a 2a 2a 2a 2a |Amiga RK|M ******|
|000011c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2f 0a 58 23 64 |********|***/.X#d|
|000011d0| 65 66 69 6e 65 20 44 55 | 4d 50 09 09 30 20 20 20 |efine DU|MP..0 |
|000011e0| 2f 2a 20 6c 69 73 74 20 | 6f 66 20 64 69 66 66 65 |/* list |of diffe|
|000011f0| 72 65 6e 74 20 62 79 74 | 65 73 20 2a 2f 0a 58 23 |rent byt|es */.X#|
|00001200| 64 65 66 69 6e 65 20 52 | 55 4e 09 09 31 20 20 20 |define R|UN..1 |
|00001210| 2f 2a 20 73 69 6e 67 6c | 65 20 72 75 6e 20 6f 66 |/* singl|e run of|
|00001220| 20 62 79 74 65 73 20 2a | 2f 0a 58 23 64 65 66 69 | bytes *|/.X#defi|
|00001230| 6e 65 20 4d 69 6e 52 75 | 6e 09 09 33 20 20 20 2f |ne MinRu|n..3 /|
|00001240| 2a 20 73 68 6f 72 74 65 | 73 74 20 61 6c 6c 6f 77 |* shorte|st allow|
|00001250| 65 64 20 72 75 6e 20 2a | 2f 0a 58 23 64 65 66 69 |ed run *|/.X#defi|
|00001260| 6e 65 20 4d 61 78 52 75 | 6e 09 09 31 32 38 20 2f |ne MaxRu|n..128 /|
|00001270| 2a 20 6c 6f 6e 67 65 73 | 74 20 72 75 6e 20 28 6c |* longes|t run (l|
|00001280| 65 6e 67 74 68 20 69 73 | 20 73 69 67 6e 65 64 20 |ength is| signed |
|00001290| 63 68 61 72 29 20 2a 2f | 0a 58 23 64 65 66 69 6e |char) */|.X#defin|
|000012a0| 65 09 4d 61 78 44 61 74 | 09 09 31 32 38 20 2f 2a |e.MaxDat|..128 /*|
|000012b0| 20 6c 6f 6e 67 65 73 74 | 20 62 6c 6f 63 6b 20 6f | longest| block o|
|000012c0| 66 20 75 6e 65 6e 63 6f | 64 65 64 20 64 61 74 61 |f unenco|ded data|
|000012d0| 20 2a 2f 0a 58 23 64 65 | 66 69 6e 65 20 47 65 74 | */.X#de|fine Get|
|000012e0| 42 79 74 65 28 29 09 28 | 2a 73 6f 75 72 63 65 2b |Byte().(|*source+|
|000012f0| 2b 29 0a 58 23 64 65 66 | 69 6e 65 20 50 75 74 42 |+).X#def|ine PutB|
|00001300| 79 74 65 28 63 29 09 7b | 20 2a 64 65 73 74 2b 2b |yte(c).{| *dest++|
|00001310| 20 3d 20 28 63 29 3b 20 | 2b 2b 50 75 74 53 69 7a | = (c); |++PutSiz|
|00001320| 65 3b 20 7d 0a 58 23 64 | 65 66 69 6e 65 20 4f 75 |e; }.X#d|efine Ou|
|00001330| 74 44 75 6d 70 28 6e 6e | 29 09 64 65 73 74 20 3d |tDump(nn|).dest =|
|00001340| 20 50 75 74 44 75 6d 70 | 28 64 65 73 74 2c 6e 6e | PutDump|(dest,nn|
|00001350| 29 3b 0a 58 23 64 65 66 | 69 6e 65 20 4f 75 74 52 |);.X#def|ine OutR|
|00001360| 75 6e 28 6e 6e 2c 63 63 | 29 09 64 65 73 74 20 3d |un(nn,cc|).dest =|
|00001370| 20 50 75 74 52 75 6e 28 | 64 65 73 74 2c 6e 6e 2c | PutRun(|dest,nn,|
|00001380| 63 63 29 3b 0a 58 0a 58 | 69 6e 74 20 20 20 20 20 |cc);.X.X|int |
|00001390| 20 20 20 20 20 20 20 20 | 50 75 74 53 69 7a 65 3b | |PutSize;|
|000013a0| 0a 58 63 68 61 72 20 20 | 20 20 20 20 20 20 20 20 |.Xchar | |
|000013b0| 20 20 62 75 66 5b 32 35 | 36 5d 3b 0a 58 0a 58 75 | buf[25|6];.X.Xu|
|000013c0| 6e 73 69 67 6e 65 64 20 | 63 68 61 72 20 20 2a 0a |nsigned |char *.|
|000013d0| 58 50 75 74 44 75 6d 70 | 28 64 65 73 74 2c 20 6e |XPutDump|(dest, n|
|000013e0| 6e 29 0a 58 75 6e 73 69 | 67 6e 65 64 20 63 68 61 |n).Xunsi|gned cha|
|000013f0| 72 20 20 2a 64 65 73 74 | 3b 0a 58 69 6e 74 20 20 |r *dest|;.Xint |
|00001400| 20 20 20 20 20 20 20 20 | 20 20 20 6e 6e 3b 0a 58 | | nn;.X|
|00001410| 7b 0a 58 20 20 20 20 69 | 6e 74 20 20 20 20 20 20 |{.X i|nt |
|00001420| 20 20 20 20 20 20 20 69 | 3b 0a 58 0a 58 20 20 20 | i|;.X.X |
|00001430| 20 50 75 74 42 79 74 65 | 28 6e 6e 20 2d 20 31 29 | PutByte|(nn - 1)|
|00001440| 3b 0a 58 20 20 20 20 66 | 6f 72 20 28 69 20 3d 20 |;.X f|or (i = |
|00001450| 30 3b 20 69 20 3c 20 6e | 6e 3b 20 69 2b 2b 29 0a |0; i < n|n; i++).|
|00001460| 58 09 50 75 74 42 79 74 | 65 28 62 75 66 5b 69 5d |X.PutByt|e(buf[i]|
|00001470| 29 3b 0a 58 20 20 20 20 | 72 65 74 75 72 6e 20 28 |);.X |return (|
|00001480| 64 65 73 74 29 3b 0a 58 | 7d 0a 58 0a 58 75 6e 73 |dest);.X|}.X.Xuns|
|00001490| 69 67 6e 65 64 20 63 68 | 61 72 20 20 2a 0a 58 50 |igned ch|ar *.XP|
|000014a0| 75 74 52 75 6e 28 64 65 | 73 74 2c 20 6e 6e 2c 20 |utRun(de|st, nn, |
|000014b0| 63 63 29 0a 58 75 6e 73 | 69 67 6e 65 64 20 63 68 |cc).Xuns|igned ch|
|000014c0| 61 72 20 20 2a 64 65 73 | 74 3b 0a 58 69 6e 74 20 |ar *des|t;.Xint |
|000014d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 6e 6e 2c 20 | | nn, |
|000014e0| 63 63 3b 0a 58 7b 0a 58 | 20 20 20 20 50 75 74 42 |cc;.X{.X| PutB|
|000014f0| 79 74 65 28 2d 28 6e 6e | 20 2d 20 31 29 29 3b 0a |yte(-(nn| - 1));.|
|00001500| 58 20 20 20 20 50 75 74 | 42 79 74 65 28 63 63 29 |X Put|Byte(cc)|
|00001510| 3b 0a 58 20 20 20 20 72 | 65 74 75 72 6e 20 28 64 |;.X r|eturn (d|
|00001520| 65 73 74 29 3b 0a 58 7d | 0a 58 0a 58 2f 2a 20 50 |est);.X}|.X.X/* P|
|00001530| 61 63 6b 52 6f 77 20 2d | 20 70 61 63 6b 20 61 20 |ackRow -| pack a |
|00001540| 72 6f 77 20 6f 66 20 64 | 61 74 61 20 75 73 69 6e |row of d|ata usin|
|00001550| 67 20 41 6d 69 67 61 20 | 49 46 46 20 52 4c 45 20 |g Amiga |IFF RLE |
|00001560| 2a 2f 0a 58 69 6e 74 20 | 0a 58 50 61 63 6b 52 6f |*/.Xint |.XPackRo|
|00001570| 77 28 70 53 6f 75 72 63 | 65 2c 20 70 44 65 73 74 |w(pSourc|e, pDest|
|00001580| 2c 20 52 6f 77 53 69 7a | 65 29 0a 58 75 6e 73 69 |, RowSiz|e).Xunsi|
|00001590| 67 6e 65 64 20 63 68 61 | 72 20 2a 2a 70 53 6f 75 |gned cha|r **pSou|
|000015a0| 72 63 65 2c 20 2a 2a 70 | 44 65 73 74 3b 0a 58 69 |rce, **p|Dest;.Xi|
|000015b0| 6e 74 20 20 20 20 20 20 | 20 20 20 20 20 20 20 52 |nt | R|
|000015c0| 6f 77 53 69 7a 65 3b 0a | 58 7b 0a 58 20 20 20 20 |owSize;.|X{.X |
|000015d0| 75 6e 73 69 67 6e 65 64 | 20 63 68 61 72 20 20 2a |unsigned| char *|
|000015e0| 73 6f 75 72 63 65 2c 20 | 2a 64 65 73 74 3b 0a 58 |source, |*dest;.X|
|000015f0| 20 20 20 20 63 68 61 72 | 20 20 20 20 20 20 20 20 | char| |
|00001600| 20 20 20 20 63 2c 20 6c | 61 73 74 63 20 3d 20 27 | c, l|astc = '|
|00001610| 5c 30 30 30 27 3b 0a 58 | 20 20 20 20 69 6e 74 20 |\000';.X| int |
|00001620| 20 20 20 20 20 20 20 20 | 20 20 20 20 6d 6f 64 65 | | mode|
|00001630| 20 3d 20 44 55 4d 50 2c | 20 6e 62 75 66 20 3d 20 | = DUMP,| nbuf = |
|00001640| 30 2c 09 2f 2a 20 6e 75 | 6d 62 65 72 20 6f 66 20 |0,./* nu|mber of |
|00001650| 63 68 61 72 73 20 69 6e | 20 62 75 66 20 2a 2f 0a |chars in| buf */.|
|00001660| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|00001670| 20 20 20 20 20 72 73 74 | 61 72 74 20 3d 20 30 3b | rst|art = 0;|
|00001680| 09 2f 2a 20 62 75 66 20 | 69 6e 64 65 78 20 63 75 |./* buf |index cu|
|00001690| 72 72 65 6e 74 20 72 75 | 6e 20 73 74 61 72 74 73 |rrent ru|n starts|
|000016a0| 20 2a 2f 0a 58 0a 58 20 | 20 20 20 73 6f 75 72 63 | */.X.X | sourc|
|000016b0| 65 20 3d 20 2a 70 53 6f | 75 72 63 65 3b 0a 58 20 |e = *pSo|urce;.X |
|000016c0| 20 20 20 64 65 73 74 20 | 3d 20 2a 70 44 65 73 74 | dest |= *pDest|
|000016d0| 3b 0a 58 0a 58 20 20 20 | 20 50 75 74 53 69 7a 65 |;.X.X | PutSize|
|000016e0| 20 3d 20 30 3b 0a 58 20 | 20 20 20 62 75 66 5b 30 | = 0;.X | buf[0|
|000016f0| 5d 20 3d 20 6c 61 73 74 | 63 20 3d 20 63 20 3d 20 |] = last|c = c = |
|00001700| 47 65 74 42 79 74 65 28 | 29 3b 0a 58 20 20 20 20 |GetByte(|);.X |
|00001710| 6e 62 75 66 20 3d 20 31 | 3b 0a 58 20 20 20 20 52 |nbuf = 1|;.X R|
|00001720| 6f 77 53 69 7a 65 2d 2d | 3b 0a 58 0a 58 20 20 20 |owSize--|;.X.X |
|00001730| 20 66 6f 72 20 28 3b 20 | 52 6f 77 53 69 7a 65 3b | for (; |RowSize;|
|00001740| 20 2d 2d 52 6f 77 53 69 | 7a 65 29 20 7b 0a 58 09 | --RowSi|ze) {.X.|
|00001750| 62 75 66 5b 6e 62 75 66 | 2b 2b 5d 20 3d 20 63 20 |buf[nbuf|++] = c |
|00001760| 3d 20 47 65 74 42 79 74 | 65 28 29 3b 0a 58 0a 58 |= GetByt|e();.X.X|
|00001770| 09 73 77 69 74 63 68 20 | 28 6d 6f 64 65 29 20 7b |.switch |(mode) {|
|00001780| 0a 58 09 63 61 73 65 20 | 44 55 4d 50 3a 0a 58 09 |.X.case |DUMP:.X.|
|00001790| 20 20 20 20 69 66 20 28 | 6e 62 75 66 20 3e 20 4d | if (|nbuf > M|
|000017a0| 61 78 44 61 74 29 20 7b | 0a 58 09 09 4f 75 74 44 |axDat) {|.X..OutD|
|000017b0| 75 6d 70 28 6e 62 75 66 | 20 2d 20 31 29 3b 0a 58 |ump(nbuf| - 1);.X|
|000017c0| 09 09 62 75 66 5b 30 5d | 20 3d 20 63 3b 0a 58 09 |..buf[0]| = c;.X.|
|000017d0| 09 6e 62 75 66 20 3d 20 | 31 3b 0a 58 09 09 72 73 |.nbuf = |1;.X..rs|
|000017e0| 74 61 72 74 20 3d 20 30 | 3b 0a 58 09 09 62 72 65 |tart = 0|;.X..bre|
|000017f0| 61 6b 3b 0a 58 09 20 20 | 20 20 7d 0a 58 09 20 20 |ak;.X. | }.X. |
|00001800| 20 20 69 66 20 28 63 20 | 3d 3d 20 6c 61 73 74 63 | if (c |== lastc|
|00001810| 29 20 7b 0a 58 09 09 69 | 66 20 28 6e 62 75 66 20 |) {.X..i|f (nbuf |
|00001820| 2d 20 72 73 74 61 72 74 | 20 3e 3d 20 4d 69 6e 52 |- rstart| >= MinR|
|00001830| 75 6e 29 20 7b 0a 58 09 | 09 20 20 20 20 69 66 20 |un) {.X.|. if |
|00001840| 28 72 73 74 61 72 74 20 | 3e 20 30 29 0a 58 09 09 |(rstart |> 0).X..|
|00001850| 09 4f 75 74 44 75 6d 70 | 28 72 73 74 61 72 74 29 |.OutDump|(rstart)|
|00001860| 3b 0a 58 09 09 20 20 20 | 20 6d 6f 64 65 20 3d 20 |;.X.. | mode = |
|00001870| 52 55 4e 3b 0a 58 09 09 | 7d 0a 58 09 09 65 6c 73 |RUN;.X..|}.X..els|
|00001880| 65 20 69 66 20 28 72 73 | 74 61 72 74 20 3d 3d 20 |e if (rs|tart == |
|00001890| 30 29 0a 58 09 09 20 20 | 20 20 6d 6f 64 65 20 3d |0).X.. | mode =|
|000018a0| 20 52 55 4e 3b 0a 58 09 | 20 20 20 20 7d 0a 58 09 | RUN;.X.| }.X.|
|000018b0| 20 20 20 20 65 6c 73 65 | 0a 58 09 09 72 73 74 61 | else|.X..rsta|
|000018c0| 72 74 20 3d 20 6e 62 75 | 66 20 2d 20 31 3b 0a 58 |rt = nbu|f - 1;.X|
|000018d0| 09 20 20 20 20 62 72 65 | 61 6b 3b 0a 58 0a 58 09 |. bre|ak;.X.X.|
|000018e0| 63 61 73 65 20 52 55 4e | 3a 0a 58 09 20 20 20 20 |case RUN|:.X. |
|000018f0| 69 66 20 28 28 63 20 21 | 3d 20 6c 61 73 74 63 29 |if ((c !|= lastc)|
|00001900| 20 7c 7c 20 28 6e 62 75 | 66 20 2d 20 72 73 74 61 | || (nbu|f - rsta|
|00001910| 72 74 20 3e 20 4d 61 78 | 52 75 6e 29 29 20 7b 0a |rt > Max|Run)) {.|
|00001920| 58 09 09 4f 75 74 52 75 | 6e 28 28 6e 62 75 66 20 |X..OutRu|n((nbuf |
|00001930| 2d 20 31 29 20 2d 20 72 | 73 74 61 72 74 2c 20 6c |- 1) - r|start, l|
|00001940| 61 73 74 63 29 3b 0a 58 | 09 09 62 75 66 5b 30 5d |astc);.X|..buf[0]|
|00001950| 20 3d 20 63 3b 0a 58 09 | 09 6e 62 75 66 20 3d 20 | = c;.X.|.nbuf = |
|00001960| 31 3b 0a 58 09 09 72 73 | 74 61 72 74 20 3d 20 30 |1;.X..rs|tart = 0|
|00001970| 3b 0a 58 09 09 6d 6f 64 | 65 20 3d 20 44 55 4d 50 |;.X..mod|e = DUMP|
|00001980| 3b 0a 58 09 20 20 20 20 | 7d 0a 58 09 20 20 20 20 |;.X. |}.X. |
|00001990| 62 72 65 61 6b 3b 0a 58 | 09 7d 0a 58 09 6c 61 73 |break;.X|.}.X.las|
|000019a0| 74 63 20 3d 20 63 3b 0a | 58 20 20 20 20 7d 0a 58 |tc = c;.|X }.X|
|000019b0| 20 20 20 20 73 77 69 74 | 63 68 20 28 6d 6f 64 65 | swit|ch (mode|
|000019c0| 29 20 7b 0a 58 20 20 20 | 20 63 61 73 65 20 44 55 |) {.X | case DU|
|000019d0| 4d 50 3a 0a 58 09 4f 75 | 74 44 75 6d 70 28 6e 62 |MP:.X.Ou|tDump(nb|
|000019e0| 75 66 29 3b 0a 58 09 62 | 72 65 61 6b 3b 0a 58 20 |uf);.X.b|reak;.X |
|000019f0| 20 20 20 63 61 73 65 20 | 52 55 4e 3a 0a 58 09 4f | case |RUN:.X.O|
|00001a00| 75 74 52 75 6e 28 6e 62 | 75 66 20 2d 20 72 73 74 |utRun(nb|uf - rst|
|00001a10| 61 72 74 2c 20 6c 61 73 | 74 63 29 3b 0a 58 09 62 |art, las|tc);.X.b|
|00001a20| 72 65 61 6b 3b 0a 58 20 | 20 20 20 7d 0a 58 0a 58 |reak;.X | }.X.X|
|00001a30| 20 20 20 20 2a 70 53 6f | 75 72 63 65 20 3d 20 73 | *pSo|urce = s|
|00001a40| 6f 75 72 63 65 3b 0a 58 | 20 20 20 20 2a 70 44 65 |ource;.X| *pDe|
|00001a50| 73 74 20 3d 20 64 65 73 | 74 3b 0a 58 0a 58 20 20 |st = des|t;.X.X |
|00001a60| 20 20 72 65 74 75 72 6e | 20 28 50 75 74 53 69 7a | return| (PutSiz|
|00001a70| 65 29 3b 0a 58 7d 0a 58 | 2f 2a 2a 2a 2a 2a 2a 2a |e);.X}.X|/*******|
|00001a80| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 20 65 6e 64 |********|**** end|
|00001a90| 20 6f 66 20 52 4b 4d 20 | 52 4c 20 65 6e 63 6f 64 | of RKM |RL encod|
|00001aa0| 69 6e 67 20 72 6f 75 74 | 69 6e 65 73 20 2a 2a 2a |ing rout|ines ***|
|00001ab0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001ac0| 2a 2a 2a 2f 0a 58 0a 58 | 0a 58 2f 2a 20 62 75 69 |***/.X.X|.X/* bui|
|00001ad0| 6c 64 5f 68 69 73 74 6f | 67 72 61 6d 20 2d 20 63 |ld_histo|gram - c|
|00001ae0| 6f 75 6e 74 20 66 72 65 | 71 75 65 6e 63 79 20 6f |ount fre|quency o|
|00001af0| 66 20 31 32 62 69 74 20 | 63 6f 6c 6f 72 73 20 69 |f 12bit |colors i|
|00001b00| 6e 20 61 6e 20 46 42 4d | 20 69 6d 61 67 65 20 2a |n an FBM| image *|
|00001b10| 2f 0a 58 62 75 69 6c 64 | 5f 68 69 73 74 6f 67 72 |/.Xbuild|_histogr|
|00001b20| 61 6d 28 69 6d 61 67 65 | 29 0a 58 46 42 4d 20 2a |am(image|).XFBM *|
|00001b30| 69 6d 61 67 65 3b 0a 58 | 7b 0a 58 20 20 20 20 69 |image;.X|{.X i|
|00001b40| 6e 74 20 69 2c 20 6a 2c | 20 74 30 2c 20 74 31 2c |nt i, j,| t0, t1,|
|00001b50| 20 67 61 70 2c 20 76 61 | 6c 2c 20 75 73 65 64 3b | gap, va|l, used;|
|00001b60| 0a 58 20 20 20 20 75 6e | 73 69 67 6e 65 64 20 63 |.X un|signed c|
|00001b70| 68 61 72 20 2a 72 70 2c | 20 2a 67 70 2c 20 2a 62 |har *rp,| *gp, *b|
|00001b80| 70 3b 0a 58 20 20 20 20 | 69 6e 74 20 64 69 66 66 |p;.X |int diff|
|00001b90| 3b 0a 58 0a 58 20 20 20 | 20 2f 2a 20 69 6e 69 74 |;.X.X | /* init|
|00001ba0| 69 61 6c 69 7a 65 20 63 | 6f 6c 6f 72 20 73 74 61 |ialize c|olor sta|
|00001bb0| 74 69 73 74 69 63 73 2e | 20 2a 2f 0a 58 20 20 20 |tistics.| */.X |
|00001bc0| 20 66 6f 72 20 28 69 20 | 3d 20 30 3b 20 69 20 3c | for (i |= 0; i <|
|00001bd0| 20 34 30 39 36 3b 20 69 | 2b 2b 29 20 7b 0a 58 09 | 4096; i|++) {.X.|
|00001be0| 63 6f 6c 6f 72 73 74 61 | 74 73 5b 69 5d 5b 30 5d |colorsta|ts[i][0]|
|00001bf0| 20 3d 20 69 3b 0a 58 09 | 63 6f 6c 6f 72 73 74 61 | = i;.X.|colorsta|
|00001c00| 74 73 5b 69 5d 5b 31 5d | 20 3d 20 30 3b 0a 58 20 |ts[i][1]| = 0;.X |
|00001c10| 20 20 20 7d 0a 58 0a 58 | 20 20 20 20 2f 2a 20 6f | }.X.X| /* o|
|00001c20| 62 74 61 69 6e 20 70 6f | 69 6e 74 65 72 73 20 74 |btain po|inters t|
|00001c30| 6f 20 74 68 65 20 62 65 | 67 69 6e 6e 69 6e 67 20 |o the be|ginning |
|00001c40| 6f 66 20 65 61 63 68 20 | 70 6c 61 6e 65 20 28 52 |of each |plane (R|
|00001c50| 65 64 2c 20 47 72 65 65 | 6e 2c 20 42 6c 75 65 29 |ed, Gree|n, Blue)|
|00001c60| 20 2a 2f 0a 58 20 20 20 | 20 72 70 20 3d 20 69 6d | */.X | rp = im|
|00001c70| 61 67 65 2d 3e 62 6d 3b | 0a 58 20 20 20 20 67 70 |age->bm;|.X gp|
|00001c80| 20 3d 20 72 70 20 2b 20 | 69 6d 61 67 65 2d 3e 68 | = rp + |image->h|
|00001c90| 64 72 2e 70 6c 6e 6c 65 | 6e 3b 0a 58 20 20 20 20 |dr.plnle|n;.X |
|00001ca0| 62 70 20 3d 20 67 70 20 | 2b 20 69 6d 61 67 65 2d |bp = gp |+ image-|
|00001cb0| 3e 68 64 72 2e 70 6c 6e | 6c 65 6e 3b 0a 58 0a 58 |>hdr.pln|len;.X.X|
|00001cc0| 20 20 20 20 2f 2a 20 63 | 6f 75 6e 74 20 74 68 65 | /* c|ount the|
|00001cd0| 20 6e 75 6d 62 65 72 20 | 6f 66 20 6f 63 63 75 72 | number |of occur|
|00001ce0| 65 6e 63 65 73 20 6f 66 | 20 65 61 63 68 20 63 6f |ences of| each co|
|00001cf0| 6c 6f 72 20 69 6e 20 74 | 68 65 20 69 6d 61 67 65 |lor in t|he image|
|00001d00| 20 2a 2f 0a 58 20 20 20 | 20 66 6f 72 20 28 69 20 | */.X | for (i |
|00001d10| 3d 20 30 20 3b 20 69 20 | 3c 20 69 6d 61 67 65 2d |= 0 ; i |< image-|
|00001d20| 3e 68 64 72 2e 70 6c 6e | 6c 65 6e 20 3b 20 69 2b |>hdr.pln|len ; i+|
|00001d30| 2b 29 20 7b 0a 58 09 76 | 61 6c 20 3d 20 28 28 2a |+) {.X.v|al = ((*|
|00001d40| 72 70 2b 2b 20 26 20 30 | 78 66 30 29 20 3c 3c 20 |rp++ & 0|xf0) << |
|00001d50| 34 29 20 2b 20 28 2a 67 | 70 2b 2b 20 26 20 30 78 |4) + (*g|p++ & 0x|
|00001d60| 66 30 29 20 2b 20 28 28 | 2a 62 70 2b 2b 20 26 20 |f0) + ((|*bp++ & |
|00001d70| 30 78 66 30 29 20 3e 3e | 20 34 29 3b 0a 58 09 76 |0xf0) >>| 4);.X.v|
|00001d80| 61 6c 20 25 3d 20 34 30 | 39 36 3b 0a 58 09 69 66 |al %= 40|96;.X.if|
|00001d90| 20 28 63 6f 6c 6f 72 73 | 74 61 74 73 5b 76 61 6c | (colors|tats[val|
|00001da0| 5d 5b 31 5d 20 3c 20 33 | 32 37 36 37 29 20 7b 0a |][1] < 3|2767) {.|
|00001db0| 58 09 20 20 20 20 63 6f | 6c 6f 72 73 74 61 74 73 |X. co|lorstats|
|00001dc0| 5b 76 61 6c 5d 5b 31 5d | 2b 2b 3b 0a 58 09 7d 0a |[val][1]|++;.X.}.|
|00001dd0| 58 20 20 20 20 7d 0a 58 | 0a 58 20 20 20 20 2f 2a |X }.X|.X /*|
|00001de0| 20 73 6f 72 74 20 74 68 | 65 20 63 6f 6c 6f 72 20 | sort th|e color |
|00001df0| 73 74 61 74 73 20 69 6e | 20 6f 72 64 65 72 20 6f |stats in| order o|
|00001e00| 66 20 64 65 63 72 65 61 | 73 69 6e 67 20 75 73 61 |f decrea|sing usa|
|00001e10| 67 65 20 2a 2f 0a 58 20 | 20 20 20 66 6f 72 20 28 |ge */.X | for (|
|00001e20| 67 61 70 20 3d 20 32 30 | 34 38 3b 20 67 61 70 20 |gap = 20|48; gap |
|00001e30| 3e 20 30 3b 20 67 61 70 | 20 2f 3d 20 32 29 20 7b |> 0; gap| /= 2) {|
|00001e40| 0a 58 09 66 6f 72 20 28 | 69 20 3d 20 67 61 70 3b |.X.for (|i = gap;|
|00001e50| 20 69 20 3c 20 34 30 39 | 36 3b 20 69 2b 2b 29 20 | i < 409|6; i++) |
|00001e60| 7b 0a 58 09 20 20 20 20 | 66 6f 72 20 28 6a 20 3d |{.X. |for (j =|
|00001e70| 20 69 20 2d 20 67 61 70 | 3b 20 6a 20 3e 3d 20 30 | i - gap|; j >= 0|
|00001e80| 20 26 26 0a 58 09 09 20 | 20 20 20 63 6f 6c 6f 72 | &&.X.. | color|
|00001e90| 73 74 61 74 73 5b 6a 5d | 5b 31 5d 20 3c 20 63 6f |stats[j]|[1] < co|
|00001ea0| 6c 6f 72 73 74 61 74 73 | 5b 6a 20 2b 20 67 61 70 |lorstats|[j + gap|
|00001eb0| 5d 5b 31 5d 3b 20 6a 20 | 2d 3d 20 67 61 70 29 20 |][1]; j |-= gap) |
|00001ec0| 7b 0a 58 09 09 74 30 20 | 3d 20 63 6f 6c 6f 72 73 |{.X..t0 |= colors|
|00001ed0| 74 61 74 73 5b 6a 5d 5b | 30 5d 3b 0a 58 09 09 74 |tats[j][|0];.X..t|
|00001ee0| 31 20 3d 20 63 6f 6c 6f | 72 73 74 61 74 73 5b 6a |1 = colo|rstats[j|
|00001ef0| 5d 5b 31 5d 3b 0a 58 09 | 09 63 6f 6c 6f 72 73 74 |][1];.X.|.colorst|
|00001f00| 61 74 73 5b 6a 5d 5b 30 | 5d 20 3d 20 63 6f 6c 6f |ats[j][0|] = colo|
|00001f10| 72 73 74 61 74 73 5b 6a | 20 2b 20 67 61 70 5d 5b |rstats[j| + gap][|
|00001f20| 30 5d 3b 0a 58 09 09 63 | 6f 6c 6f 72 73 74 61 74 |0];.X..c|olorstat|
|00001f30| 73 5b 6a 5d 5b 31 5d 20 | 3d 20 63 6f 6c 6f 72 73 |s[j][1] |= colors|
|00001f40| 74 61 74 73 5b 6a 20 2b | 20 67 61 70 5d 5b 31 5d |tats[j +| gap][1]|
|00001f50| 3b 0a 58 09 09 63 6f 6c | 6f 72 73 74 61 74 73 5b |;.X..col|orstats[|
|00001f60| 6a 20 2b 20 67 61 70 5d | 5b 30 5d 20 3d 20 74 30 |j + gap]|[0] = t0|
|00001f70| 3b 0a 58 09 09 63 6f 6c | 6f 72 73 74 61 74 73 5b |;.X..col|orstats[|
|00001f80| 6a 20 2b 20 67 61 70 5d | 5b 31 5d 20 3d 20 74 31 |j + gap]|[1] = t1|
|00001f90| 3b 0a 58 09 20 20 20 20 | 7d 0a 58 09 7d 0a 58 20 |;.X. |}.X.}.X |
|00001fa0| 20 20 20 7d 0a 58 0a 58 | 20 20 20 20 2f 2a 20 63 | }.X.X| /* c|
|00001fb0| 6f 75 6e 74 20 74 68 65 | 20 6e 75 6d 62 65 72 20 |ount the| number |
|00001fc0| 6f 66 20 63 6f 6c 6f 72 | 73 20 61 63 74 75 61 6c |of color|s actual|
|00001fd0| 6c 79 20 75 73 65 64 20 | 69 6e 20 74 68 65 20 69 |ly used |in the i|
|00001fe0| 6d 61 67 65 20 2a 2f 0a | 58 20 20 20 20 66 6f 72 |mage */.|X for|
|00001ff0| 20 28 75 73 65 64 20 3d | 20 30 3b 20 75 73 65 64 | (used =| 0; used|
|00002000| 20 3c 20 34 30 39 36 20 | 26 26 20 63 6f 6c 6f 72 | < 4096 |&& color|
|00002010| 73 74 61 74 73 5b 75 73 | 65 64 5d 5b 31 5d 20 3e |stats[us|ed][1] >|
|00002020| 20 30 3b 20 75 73 65 64 | 2b 2b 29 3b 0a 58 20 20 | 0; used|++);.X |
|00002030| 20 20 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 | fprint|f(stderr|
|00002040| 2c 20 22 55 73 65 64 20 | 25 64 20 63 6f 6c 6f 72 |, "Used |%d color|
|00002050| 73 20 6f 75 74 20 6f 66 | 20 61 20 70 6f 73 73 69 |s out of| a possi|
|00002060| 62 6c 65 20 34 30 39 36 | 5c 6e 22 2c 20 75 73 65 |ble 4096|\n", use|
|00002070| 64 29 3b 0a 58 7d 0a 58 | 0a 58 2f 2a 2d 0a 58 20 |d);.X}.X|.X/*-.X |
|00002080| 2a 20 70 6c 6f 74 5f 70 | 69 78 65 6c 20 2d 20 70 |* plot_p|ixel - p|
|00002090| 6c 6f 74 20 61 20 63 6f | 6c 6f 72 20 69 6e 20 61 |lot a co|lor in a|
|000020a0| 6e 20 41 6d 69 67 61 20 | 73 74 79 6c 65 20 62 69 |n Amiga |style bi|
|000020b0| 74 6d 61 70 20 28 6f 6e | 65 20 70 6c 61 6e 65 20 |tmap (on|e plane |
|000020c0| 70 65 72 20 62 69 74 29 | 0a 58 20 2a 0a 58 20 2a |per bit)|.X *.X *|
|000020d0| 20 44 65 73 63 72 69 70 | 74 69 6f 6e 3a 0a 58 20 | Descrip|tion:.X |
|000020e0| 2a 09 41 20 73 6f 6d 65 | 77 68 61 74 20 6f 70 74 |*.A some|what opt|
|000020f0| 69 6d 69 7a 65 64 20 72 | 6f 75 74 69 6e 65 20 74 |imized r|outine t|
|00002100| 6f 20 73 65 74 2f 72 65 | 73 65 74 20 6f 6e 65 20 |o set/re|set one |
|00002110| 62 69 74 20 69 6e 20 65 | 61 63 68 20 70 6c 61 6e |bit in e|ach plan|
|00002120| 65 0a 58 20 2a 09 61 74 | 20 74 68 65 20 73 70 65 |e.X *.at| the spe|
|00002130| 63 69 66 69 65 64 20 28 | 78 2c 79 29 20 63 6f 6f |cified (|x,y) coo|
|00002140| 72 64 69 6e 61 74 65 73 | 2e 20 70 6c 61 6e 65 20 |rdinates|. plane |
|00002150| 69 20 67 65 74 73 20 74 | 68 65 20 62 69 74 20 69 |i gets t|he bit i|
|00002160| 6e 0a 58 20 2a 09 70 6f | 73 69 74 69 6f 6e 20 69 |n.X *.po|sition i|
|00002170| 20 6f 66 20 63 6f 6c 6f | 72 2e 20 61 20 72 65 70 | of colo|r. a rep|
|00002180| 6c 61 63 65 6d 65 6e 74 | 20 66 6f 72 20 74 68 65 |lacement| for the|
|00002190| 20 41 6d 69 67 61 20 57 | 72 69 74 65 50 69 78 65 | Amiga W|ritePixe|
|000021a0| 6c 20 63 61 6c 6c 2e 0a | 58 2d 2a 2f 0a 58 70 6c |l call..|X-*/.Xpl|
|000021b0| 6f 74 5f 70 69 78 65 6c | 28 70 6c 61 6e 65 73 2c |ot_pixel|(planes,|
|000021c0| 20 78 2c 20 79 2c 20 63 | 6f 6c 6f 72 29 0a 58 75 | x, y, c|olor).Xu|
|000021d0| 6e 73 69 67 6e 65 64 20 | 63 68 61 72 20 2a 70 6c |nsigned |char *pl|
|000021e0| 61 6e 65 73 5b 5d 3b 0a | 58 69 6e 74 20 78 2c 20 |anes[];.|Xint x, |
|000021f0| 79 3b 0a 58 72 65 67 69 | 73 74 65 72 20 69 6e 74 |y;.Xregi|ster int|
|00002200| 20 63 6f 6c 6f 72 3b 0a | 58 7b 0a 58 20 20 20 20 | color;.|X{.X |
|00002210| 72 65 67 69 73 74 65 72 | 20 69 6e 74 20 62 69 74 |register| int bit|
|00002220| 3b 0a 58 20 20 20 20 72 | 65 67 69 73 74 65 72 20 |;.X r|egister |
|00002230| 75 6e 73 69 67 6e 65 64 | 20 63 68 61 72 20 73 68 |unsigned| char sh|
|00002240| 69 66 74 65 64 5f 62 69 | 74 20 3d 20 31 20 3c 3c |ifted_bi|t = 1 <<|
|00002250| 20 28 37 2d 28 78 25 38 | 29 29 3b 0a 58 20 20 20 | (7-(x%8|));.X |
|00002260| 20 72 65 67 69 73 74 65 | 72 20 69 6e 74 20 61 72 | registe|r int ar|
|00002270| 72 61 79 5f 6f 66 66 73 | 65 74 20 3d 20 79 20 2a |ray_offs|et = y *|
|00002280| 20 72 6f 77 5f 73 69 7a | 65 20 2b 20 78 2f 38 3b | row_siz|e + x/8;|
|00002290| 0a 58 20 20 20 20 72 65 | 67 69 73 74 65 72 20 69 |.X re|gister i|
|000022a0| 6e 74 20 69 3b 0a 58 0a | 58 20 20 20 20 66 6f 72 |nt i;.X.|X for|
|000022b0| 20 28 69 20 3d 20 30 3b | 20 63 6f 6c 6f 72 20 26 | (i = 0;| color &|
|000022c0| 26 20 69 20 3c 20 64 65 | 70 74 68 3b 20 69 2b 2b |& i < de|pth; i++|
|000022d0| 29 20 7b 0a 58 09 62 69 | 74 20 3d 20 63 6f 6c 6f |) {.X.bi|t = colo|
|000022e0| 72 20 26 20 31 3b 0a 58 | 09 63 6f 6c 6f 72 20 3e |r & 1;.X|.color >|
|000022f0| 3e 3d 20 31 3b 0a 58 0a | 58 09 69 66 20 28 62 69 |>= 1;.X.|X.if (bi|
|00002300| 74 29 20 20 20 20 2a 28 | 70 6c 61 6e 65 73 5b 69 |t) *(|planes[i|
|00002310| 5d 20 2b 20 61 72 72 61 | 79 5f 6f 66 66 73 65 74 |] + arra|y_offset|
|00002320| 29 20 7c 3d 20 73 68 69 | 66 74 65 64 5f 62 69 74 |) |= shi|fted_bit|
|00002330| 3b 0a 58 20 20 20 20 7d | 0a 58 7d 0a 58 0a 58 0a |;.X }|.X}.X.X.|
|00002340| 58 2f 2a 2d 0a 58 20 2a | 20 66 62 6d 32 68 61 6d |X/*-.X *| fbm2ham|
|00002350| 20 2d 20 77 72 69 74 65 | 20 61 6e 20 46 42 4d 20 | - write| an FBM |
|00002360| 69 6d 61 67 65 20 69 6e | 20 48 41 4d 20 49 46 46 |image in| HAM IFF|
|00002370| 20 66 6f 72 6d 61 74 20 | 6f 6e 20 74 68 65 20 67 | format |on the g|
|00002380| 69 76 65 6e 20 66 69 6c | 65 20 70 6f 69 6e 74 65 |iven fil|e pointe|
|00002390| 72 2e 0a 58 20 2a 0a 58 | 2d 2a 2f 0a 58 66 62 6d |r..X *.X|-*/.Xfbm|
|000023a0| 32 68 61 6d 28 69 6d 61 | 67 65 2c 20 6f 66 69 6c |2ham(ima|ge, ofil|
|000023b0| 29 0a 58 46 42 4d 20 2a | 69 6d 61 67 65 3b 0a 58 |).XFBM *|image;.X|
|000023c0| 46 49 4c 45 20 2a 6f 66 | 69 6c 3b 0a 58 7b 0a 58 |FILE *of|il;.X{.X|
|000023d0| 20 20 20 20 69 6e 74 20 | 20 20 20 20 20 20 20 20 | int | |
|000023e0| 20 20 20 20 69 2c 20 6a | 2c 20 6b 2c 20 67 61 70 | i, j|, k, gap|
|000023f0| 2c 20 74 30 2c 20 74 31 | 2c 20 70 72 67 62 2c 20 |, t0, t1|, prgb, |
|00002400| 63 72 67 62 2c 20 63 70 | 69 78 2c 20 70 70 69 78 |crgb, cp|ix, ppix|
|00002410| 2c 20 6d 61 78 64 69 73 | 2c 20 75 73 65 64 3b 0a |, maxdis|, used;.|
|00002420| 58 20 20 20 20 69 6e 74 | 09 09 20 20 20 20 63 31 |X int|.. c1|
|00002430| 2c 20 63 32 2c 20 64 69 | 66 66 3b 0a 58 20 20 20 |, c2, di|ff;.X |
|00002440| 20 75 6e 73 69 67 6e 65 | 64 20 63 68 61 72 20 2a | unsigne|d char *|
|00002450| 72 70 2c 20 2a 67 70 2c | 20 2a 62 70 3b 0a 58 0a |rp, *gp,| *bp;.X.|
|00002460| 58 20 20 20 20 66 70 72 | 69 6e 74 66 28 73 74 64 |X fpr|intf(std|
|00002470| 65 72 72 2c 20 22 42 75 | 69 6c 64 69 6e 67 20 61 |err, "Bu|ilding a|
|00002480| 20 63 6f 6c 6f 72 20 68 | 69 73 74 6f 67 72 61 6d | color h|istogram|
|00002490| 3a 5c 6e 22 29 3b 0a 58 | 20 20 20 20 62 75 69 6c |:\n");.X| buil|
|000024a0| 64 5f 68 69 73 74 6f 67 | 72 61 6d 28 69 6d 61 67 |d_histog|ram(imag|
|000024b0| 65 29 3b 0a 58 0a 58 20 | 20 20 20 2f 2a 20 63 6f |e);.X.X | /* co|
|000024c0| 6e 76 65 72 74 20 74 68 | 65 20 69 6d 61 67 65 20 |nvert th|e image |
|000024d0| 74 6f 20 61 6e 20 41 6d | 69 67 61 20 48 41 4d 20 |to an Am|iga HAM |
|000024e0| 62 69 74 70 6c 61 6e 65 | 20 62 61 73 65 64 20 69 |bitplane| based i|
|000024f0| 6d 61 67 65 20 2a 2f 0a | 58 20 20 20 20 63 70 69 |mage */.|X cpi|
|00002500| 78 20 3d 20 30 3b 0a 58 | 20 20 20 20 63 72 67 62 |x = 0;.X| crgb|
|00002510| 20 3d 20 63 6f 6c 6f 72 | 73 74 61 74 73 5b 30 5d | = color|stats[0]|
|00002520| 5b 31 5d 3b 0a 58 0a 58 | 20 20 20 20 72 70 20 3d |[1];.X.X| rp =|
|00002530| 20 69 6d 61 67 65 2d 3e | 62 6d 3b 0a 58 20 20 20 | image->|bm;.X |
|00002540| 20 67 70 20 3d 20 72 70 | 20 2b 20 69 6d 61 67 65 | gp = rp| + image|
|00002550| 2d 3e 68 64 72 2e 70 6c | 6e 6c 65 6e 3b 0a 58 20 |->hdr.pl|nlen;.X |
|00002560| 20 20 20 62 70 20 3d 20 | 67 70 20 2b 20 69 6d 61 | bp = |gp + ima|
|00002570| 67 65 2d 3e 68 64 72 2e | 70 6c 6e 6c 65 6e 3b 0a |ge->hdr.|plnlen;.|
|00002580| 58 0a 58 20 20 20 20 72 | 6f 77 5f 73 69 7a 65 20 |X.X r|ow_size |
|00002590| 3d 20 28 28 69 6d 61 67 | 65 2d 3e 68 64 72 2e 63 |= ((imag|e->hdr.c|
|000025a0| 6f 6c 73 20 2b 20 31 35 | 29 20 2f 20 31 36 29 20 |ols + 15|) / 16) |
|000025b0| 2a 20 32 3b 0a 58 20 20 | 20 20 64 69 66 66 20 3d |* 2;.X | diff =|
|000025c0| 20 69 6d 61 67 65 2d 3e | 68 64 72 2e 72 6f 77 6c | image->|hdr.rowl|
|000025d0| 65 6e 20 2d 20 69 6d 61 | 67 65 2d 3e 68 64 72 2e |en - ima|ge->hdr.|
|000025e0| 63 6f 6c 73 3b 0a 58 0a | 58 20 20 20 20 66 6f 72 |cols;.X.|X for|
|000025f0| 20 28 69 20 3d 20 30 3b | 20 69 20 3c 20 64 65 70 | (i = 0;| i < dep|
|00002600| 74 68 20 3b 20 69 2b 2b | 29 20 7b 0a 58 09 70 6c |th ; i++|) {.X.pl|
|00002610| 61 6e 65 73 5b 69 5d 20 | 3d 20 28 75 6e 73 69 67 |anes[i] |= (unsig|
|00002620| 6e 65 64 20 63 68 61 72 | 20 2a 29 6d 61 6c 6c 6f |ned char| *)mallo|
|00002630| 63 28 72 6f 77 5f 73 69 | 7a 65 20 2a 20 69 6d 61 |c(row_si|ze * ima|
|00002640| 67 65 2d 3e 68 64 72 2e | 72 6f 77 73 29 3b 0a 58 |ge->hdr.|rows);.X|
|00002650| 20 20 20 20 7d 0a 58 0a | 58 20 20 20 20 66 6f 72 | }.X.|X for|
|00002660| 20 28 69 20 3d 20 30 3b | 20 69 20 3c 20 69 6d 61 | (i = 0;| i < ima|
|00002670| 67 65 2d 3e 68 64 72 2e | 72 6f 77 73 3b 20 69 20 |ge->hdr.|rows; i |
|00002680| 2b 2b 29 20 7b 0a 58 09 | 2f 2a 20 76 65 72 62 6f |++) {.X.|/* verbo|
|00002690| 73 65 20 6f 75 74 70 75 | 74 20 62 65 63 61 75 73 |se outpu|t becaus|
|000026a0| 65 20 74 68 69 73 20 70 | 72 6f 67 72 61 6d 20 69 |e this p|rogram i|
|000026b0| 73 20 73 6c 6f 77 20 65 | 76 65 6e 20 6f 6e 20 61 |s slow e|ven on a|
|000026c0| 20 53 75 6e 20 2a 2f 0a | 58 09 69 66 20 28 69 25 | Sun */.|X.if (i%|
|000026d0| 35 30 20 3d 3d 20 30 29 | 20 7b 20 66 70 72 69 6e |50 == 0)| { fprin|
|000026e0| 74 66 28 73 74 64 65 72 | 72 2c 20 22 2e 2e 2e 25 |tf(stder|r, "...%|
|000026f0| 64 22 2c 20 69 29 3b 20 | 66 66 6c 75 73 68 28 73 |d", i); |fflush(s|
|00002700| 74 64 65 72 72 29 3b 20 | 7d 0a 58 0a 58 09 2f 2a |tderr); |}.X.X./*|
|00002710| 20 73 74 65 70 20 74 68 | 72 6f 75 67 68 20 63 75 | step th|rough cu|
|00002720| 72 72 65 6e 74 20 72 6f | 77 2c 20 63 6f 6e 76 65 |rrent ro|w, conve|
|00002730| 72 74 69 6e 67 20 46 42 | 4d 20 70 69 78 65 6c 20 |rting FB|M pixel |
|00002740| 74 6f 20 6e 65 61 72 65 | 73 74 20 65 71 75 69 76 |to neare|st equiv|
|00002750| 61 6c 65 6e 74 0a 58 09 | 20 2a 20 48 41 4d 20 70 |alent.X.| * HAM p|
|00002760| 69 78 65 6c 20 2a 2f 0a | 58 09 66 6f 72 20 28 6a |ixel */.|X.for (j|
|00002770| 20 3d 20 30 3b 20 6a 20 | 3c 20 69 6d 61 67 65 2d | = 0; j |< image-|
|00002780| 3e 68 64 72 2e 63 6f 6c | 73 3b 20 6a 2b 2b 29 20 |>hdr.col|s; j++) |
|00002790| 7b 0a 58 09 20 20 20 20 | 70 72 67 62 20 3d 20 63 |{.X. |prgb = c|
|000027a0| 72 67 62 3b 0a 58 09 20 | 20 20 20 63 72 67 62 20 |rgb;.X. | crgb |
|000027b0| 3d 20 28 28 2a 72 70 2b | 2b 20 26 20 30 78 66 30 |= ((*rp+|+ & 0xf0|
|000027c0| 29 20 3c 3c 20 34 29 20 | 2b 20 28 2a 67 70 2b 2b |) << 4) |+ (*gp++|
|000027d0| 20 26 20 30 78 66 30 29 | 20 2b 20 28 28 2a 62 70 | & 0xf0)| + ((*bp|
|000027e0| 2b 2b 20 26 20 30 78 66 | 30 29 20 3e 3e 20 34 29 |++ & 0xf|0) >> 4)|
|000027f0| 3b 0a 58 09 20 20 20 20 | 63 72 67 62 20 25 3d 20 |;.X. |crgb %= |
|00002800| 34 30 39 36 3b 0a 58 09 | 20 20 20 20 70 70 69 78 |4096;.X.| ppix|
|00002810| 20 3d 20 63 70 69 78 3b | 0a 58 0a 58 09 20 20 20 | = cpix;|.X.X. |
|00002820| 20 2f 2a 20 73 74 61 72 | 74 20 6f 66 20 73 63 61 | /* star|t of sca|
|00002830| 6e 20 6c 69 6e 65 20 69 | 73 20 41 4c 57 41 59 53 |n line i|s ALWAYS|
|00002840| 20 61 6e 20 61 62 73 6f | 6c 75 74 65 20 63 6f 6c | an abso|lute col|
|00002850| 6f 72 20 2a 2f 0a 58 09 | 20 20 20 20 69 66 20 28 |or */.X.| if (|
|00002860| 6a 20 3d 3d 20 30 29 0a | 58 09 09 63 70 69 78 20 |j == 0).|X..cpix |
|00002870| 3d 20 67 65 74 63 6f 6c | 6f 72 28 70 70 69 78 2c |= getcol|or(ppix,|
|00002880| 20 26 63 72 67 62 2c 20 | 2d 31 29 3b 0a 58 09 20 | &crgb, |-1);.X. |
|00002890| 20 20 20 65 6c 73 65 0a | 58 09 09 63 70 69 78 20 | else.|X..cpix |
|000028a0| 3d 20 67 65 74 63 6f 6c | 6f 72 28 70 70 69 78 2c |= getcol|or(ppix,|
|000028b0| 20 26 63 72 67 62 2c 20 | 70 72 67 62 29 3b 0a 58 | &crgb, |prgb);.X|
|000028c0| 0a 58 09 20 20 20 20 2f | 2a 20 70 6c 6f 74 20 74 |.X. /|* plot t|
|000028d0| 68 65 20 63 6f 6d 70 75 | 74 65 64 20 70 69 78 65 |he compu|ted pixe|
|000028e0| 6c 20 2a 2f 0a 58 09 20 | 20 20 20 70 6c 6f 74 5f |l */.X. | plot_|
|000028f0| 70 69 78 65 6c 28 70 6c | 61 6e 65 73 2c 20 6a 2c |pixel(pl|anes, j,|
|00002900| 20 69 2c 20 63 70 69 78 | 29 3b 0a 58 09 7d 0a 58 | i, cpix|);.X.}.X|
|00002910| 09 72 70 20 2b 3d 20 64 | 69 66 66 3b 0a 58 09 67 |.rp += d|iff;.X.g|
|00002920| 70 20 2b 3d 20 64 69 66 | 66 3b 0a 58 09 62 70 20 |p += dif|f;.X.bp |
|00002930| 2b 3d 20 64 69 66 66 3b | 0a 58 20 20 20 20 7d 0a |+= diff;|.X }.|
|00002940| 58 20 20 20 20 66 70 72 | 69 6e 74 66 28 73 74 64 |X fpr|intf(std|
|00002950| 65 72 72 2c 20 22 5c 6e | 22 29 3b 0a 58 0a 58 20 |err, "\n|");.X.X |
|00002960| 20 20 20 2f 2a 20 4e 6f | 77 20 77 65 20 77 72 69 | /* No|w we wri|
|00002970| 74 65 20 74 68 65 20 70 | 6c 61 6e 65 73 5b 5d 20 |te the p|lanes[] |
|00002980| 61 72 72 61 79 20 77 65 | 20 6a 75 73 74 20 63 72 |array we| just cr|
|00002990| 65 61 74 65 64 20 69 6e | 20 49 4c 42 4d 20 66 6f |eated in| ILBM fo|
|000029a0| 72 6d 61 74 20 2a 2f 0a | 58 20 20 20 20 73 70 72 |rmat */.|X spr|
|000029b0| 69 6e 74 66 28 73 74 72 | 2c 20 22 46 4f 52 4d 22 |intf(str|, "FORM"|
|000029c0| 29 3b 0a 58 20 20 20 20 | 66 77 72 69 74 65 28 73 |);.X |fwrite(s|
|000029d0| 74 72 2c 20 31 2c 20 34 | 2c 20 6f 66 69 6c 29 3b |tr, 1, 4|, ofil);|
|000029e0| 0a 58 20 20 20 20 70 6f | 73 31 20 3d 20 66 74 65 |.X po|s1 = fte|
|000029f0| 6c 6c 28 6f 66 69 6c 29 | 3b 0a 58 20 20 20 20 6c |ll(ofil)|;.X l|
|00002a00| 6e 67 20 3d 20 46 4f 52 | 4d 73 69 7a 65 3b 0a 58 |ng = FOR|Msize;.X|
|00002a10| 20 20 20 20 66 77 72 69 | 74 65 28 26 6c 6e 67 2c | fwri|te(&lng,|
|00002a20| 20 34 2c 20 31 2c 20 6f | 66 69 6c 29 3b 0a 58 20 | 4, 1, o|fil);.X |
|00002a30| 20 20 20 73 70 72 69 6e | 74 66 28 73 74 72 2c 20 | sprin|tf(str, |
|00002a40| 22 49 4c 42 4d 22 29 3b | 0a 58 20 20 20 20 66 77 |"ILBM");|.X fw|
|00002a50| 72 69 74 65 28 73 74 72 | 2c 20 31 2c 20 34 2c 20 |rite(str|, 1, 4, |
|00002a60| 6f 66 69 6c 29 3b 0a 58 | 0a 58 20 20 20 20 73 70 |ofil);.X|.X sp|
|00002a70| 72 69 6e 74 66 28 73 74 | 72 2c 20 22 42 4d 48 44 |rintf(st|r, "BMHD|
|00002a80| 22 29 3b 0a 58 20 20 20 | 20 66 77 72 69 74 65 28 |");.X | fwrite(|
|00002a90| 73 74 72 2c 20 31 2c 20 | 34 2c 20 6f 66 69 6c 29 |str, 1, |4, ofil)|
|00002aa0| 3b 0a 58 20 20 20 20 6c | 6e 67 20 3d 20 42 4d 48 |;.X l|ng = BMH|
|00002ab0| 44 73 69 7a 65 3b 0a 58 | 20 20 20 20 66 77 72 69 |Dsize;.X| fwri|
|00002ac0| 74 65 28 26 6c 6e 67 2c | 20 34 2c 20 31 2c 20 6f |te(&lng,| 4, 1, o|
|00002ad0| 66 69 6c 29 3b 0a 58 20 | 20 20 20 77 72 64 20 3d |fil);.X | wrd =|
|00002ae0| 20 69 6d 61 67 65 2d 3e | 68 64 72 2e 63 6f 6c 73 | image->|hdr.cols|
|00002af0| 3b 0a 58 20 20 20 20 66 | 77 72 69 74 65 28 26 77 |;.X f|write(&w|
|00002b00| 72 64 2c 20 32 2c 20 31 | 2c 20 6f 66 69 6c 29 3b |rd, 2, 1|, ofil);|
|00002b10| 09 2f 2a 20 77 69 64 74 | 68 20 2a 2f 0a 58 20 20 |./* widt|h */.X |
|00002b20| 20 20 77 72 64 20 3d 20 | 69 6d 61 67 65 2d 3e 68 | wrd = |image->h|
|00002b30| 64 72 2e 72 6f 77 73 3b | 0a 58 20 20 20 20 66 77 |dr.rows;|.X fw|
|00002b40| 72 69 74 65 28 26 77 72 | 64 2c 20 32 2c 20 31 2c |rite(&wr|d, 2, 1,|
|00002b50| 20 6f 66 69 6c 29 3b 09 | 2f 2a 20 68 65 69 67 68 | ofil);.|/* heigh|
|00002b60| 74 20 2a 2f 0a 58 20 20 | 20 20 77 72 64 20 3d 20 |t */.X | wrd = |
|00002b70| 30 3b 0a 58 20 20 20 20 | 66 77 72 69 74 65 28 26 |0;.X |fwrite(&|
|00002b80| 77 72 64 2c 20 32 2c 20 | 31 2c 20 6f 66 69 6c 29 |wrd, 2, |1, ofil)|
|00002b90| 3b 09 2f 2a 20 74 6f 70 | 20 2a 2f 0a 58 20 20 20 |;./* top| */.X |
|00002ba0| 20 77 72 64 20 3d 20 30 | 3b 0a 58 20 20 20 20 66 | wrd = 0|;.X f|
|00002bb0| 77 72 69 74 65 28 26 77 | 72 64 2c 20 32 2c 20 31 |write(&w|rd, 2, 1|
|00002bc0| 2c 20 6f 66 69 6c 29 3b | 09 2f 2a 20 6c 65 66 74 |, ofil);|./* left|
|00002bd0| 20 2a 2f 0a 58 20 20 20 | 20 62 79 74 20 3d 20 64 | */.X | byt = d|
|00002be0| 65 70 74 68 3b 0a 58 20 | 20 20 20 66 77 72 69 74 |epth;.X | fwrit|
|00002bf0| 65 28 26 62 79 74 2c 20 | 31 2c 20 31 2c 20 6f 66 |e(&byt, |1, 1, of|
|00002c00| 69 6c 29 3b 09 2f 2a 20 | 44 65 70 74 68 20 2a 2f |il);./* |Depth */|
|00002c10| 0a 58 20 20 20 20 62 79 | 74 20 3d 20 30 3b 0a 58 |.X by|t = 0;.X|
|00002c20| 20 20 20 20 66 77 72 69 | 74 65 28 26 62 79 74 2c | fwri|te(&byt,|
|00002c30| 20 31 2c 20 31 2c 20 6f | 66 69 6c 29 3b 09 2f 2a | 1, 1, o|fil);./*|
|00002c40| 20 6d 61 73 6b 20 2a 2f | 0a 58 20 20 20 20 62 79 | mask */|.X by|
|00002c50| 74 20 3d 20 63 6f 6d 70 | 3b 0a 58 20 20 20 20 66 |t = comp|;.X f|
|00002c60| 77 72 69 74 65 28 26 62 | 79 74 2c 20 31 2c 20 31 |write(&b|yt, 1, 1|
|00002c70| 2c 20 6f 66 69 6c 29 3b | 09 2f 2a 20 63 6f 6d 70 |, ofil);|./* comp|
|00002c80| 72 65 73 73 20 2a 2f 0a | 58 20 20 20 20 62 79 74 |ress */.|X byt|
|00002c90| 20 3d 20 30 3b 0a 58 20 | 20 20 20 66 77 72 69 74 | = 0;.X | fwrit|
|00002ca0| 65 28 26 62 79 74 2c 20 | 31 2c 20 31 2c 20 6f 66 |e(&byt, |1, 1, of|
|00002cb0| 69 6c 29 3b 09 2f 2a 20 | 70 61 64 20 2a 2f 0a 58 |il);./* |pad */.X|
|00002cc0| 20 20 20 20 77 72 64 20 | 3d 20 30 3b 0a 58 20 20 | wrd |= 0;.X |
|00002cd0| 20 20 66 77 72 69 74 65 | 28 26 77 72 64 2c 20 32 | fwrite|(&wrd, 2|
|00002ce0| 2c 20 31 2c 20 6f 66 69 | 6c 29 3b 09 2f 2a 20 74 |, 1, ofi|l);./* t|
|00002cf0| 72 61 6e 73 70 61 72 65 | 6e 63 79 20 2a 2f 0a 58 |ranspare|ncy */.X|
|00002d00| 20 20 20 20 62 79 74 20 | 3d 20 31 30 3b 0a 58 20 | byt |= 10;.X |
|00002d10| 20 20 20 66 77 72 69 74 | 65 28 26 62 79 74 2c 20 | fwrit|e(&byt, |
|00002d20| 31 2c 20 31 2c 20 6f 66 | 69 6c 29 3b 09 2f 2a 20 |1, 1, of|il);./* |
|00002d30| 61 73 70 65 63 74 20 78 | 20 2a 2f 0a 58 20 20 20 |aspect x| */.X |
|00002d40| 20 62 79 74 20 3d 20 31 | 31 3b 0a 58 20 20 20 20 | byt = 1|1;.X |
|00002d50| 66 77 72 69 74 65 28 26 | 62 79 74 2c 20 31 2c 20 |fwrite(&|byt, 1, |
|00002d60| 31 2c 20 6f 66 69 6c 29 | 3b 09 2f 2a 20 61 73 70 |1, ofil)|;./* asp|
|00002d70| 65 63 74 20 79 20 2a 2f | 0a 58 20 20 20 20 77 72 |ect y */|.X wr|
|00002d80| 64 20 3d 20 69 6d 61 67 | 65 2d 3e 68 64 72 2e 63 |d = imag|e->hdr.c|
|00002d90| 6f 6c 73 3b 0a 58 20 20 | 20 20 66 77 72 69 74 65 |ols;.X | fwrite|
|00002da0| 28 26 77 72 64 2c 20 32 | 2c 20 31 2c 20 6f 66 69 |(&wrd, 2|, 1, ofi|
|00002db0| 6c 29 3b 09 2f 2a 20 70 | 61 67 65 20 77 69 64 74 |l);./* p|age widt|
|00002dc0| 68 20 2a 2f 0a 58 20 20 | 20 20 77 72 64 20 3d 20 |h */.X | wrd = |
|00002dd0| 69 6d 61 67 65 2d 3e 68 | 64 72 2e 72 6f 77 73 3b |image->h|dr.rows;|
|00002de0| 0a 58 20 20 20 20 66 77 | 72 69 74 65 28 26 77 72 |.X fw|rite(&wr|
|00002df0| 64 2c 20 32 2c 20 31 2c | 20 6f 66 69 6c 29 3b 09 |d, 2, 1,| ofil);.|
|00002e00| 2f 2a 20 70 61 67 65 20 | 68 65 69 67 68 74 20 2a |/* page |height *|
|00002e10| 2f 0a 58 0a 58 20 20 20 | 20 2f 2a 20 43 41 4d 47 |/.X.X | /* CAMG|
|00002e20| 20 63 68 75 6e 6b 20 66 | 6f 72 20 64 69 73 70 6c | chunk f|or displ|
|00002e30| 61 79 69 6e 67 20 66 69 | 6c 65 73 20 6f 6e 20 74 |aying fi|les on t|
|00002e40| 68 65 20 41 6d 69 67 61 | 2e 20 73 68 6f 75 6c 64 |he Amiga|. should|
|00002e50| 20 69 6e 63 6c 75 64 65 | 20 61 74 20 6c 65 61 73 | include| at leas|
|00002e60| 74 0a 58 20 20 20 20 20 | 2a 20 74 68 65 20 48 41 |t.X |* the HA|
|00002e70| 4d 20 66 6c 61 67 3b 20 | 49 20 61 6c 73 6f 20 61 |M flag; |I also a|
|00002e80| 64 64 20 6c 61 63 65 20 | 69 66 20 74 68 65 20 70 |dd lace |if the p|
|00002e90| 69 63 74 75 72 65 20 69 | 73 20 6c 61 72 67 65 20 |icture i|s large |
|00002ea0| 65 6e 6f 75 67 68 2e 20 | 50 65 72 68 61 70 73 0a |enough. |Perhaps.|
|00002eb0| 58 20 20 20 20 20 2a 20 | 74 68 69 73 20 73 68 6f |X * |this sho|
|00002ec0| 75 6c 64 20 62 65 20 61 | 6e 20 6f 70 74 69 6f 6e |uld be a|n option|
|00002ed0| 2e 20 2d 43 48 4b 20 2a | 2f 0a 58 20 20 20 20 73 |. -CHK *|/.X s|
|00002ee0| 70 72 69 6e 74 66 28 73 | 74 72 2c 20 22 43 41 4d |printf(s|tr, "CAM|
|00002ef0| 47 22 29 3b 0a 58 20 20 | 20 20 66 77 72 69 74 65 |G");.X | fwrite|
|00002f00| 28 73 74 72 2c 20 31 2c | 20 34 2c 20 6f 66 69 6c |(str, 1,| 4, ofil|
|00002f10| 29 3b 0a 58 20 20 20 20 | 6c 6e 67 20 3d 20 43 41 |);.X |lng = CA|
|00002f20| 4d 47 73 69 7a 65 3b 0a | 58 20 20 20 20 66 77 72 |MGsize;.|X fwr|
|00002f30| 69 74 65 28 26 6c 6e 67 | 2c 20 34 2c 20 31 2c 20 |ite(&lng|, 4, 1, |
|00002f40| 6f 66 69 6c 29 3b 0a 58 | 20 20 20 20 69 66 20 28 |ofil);.X| if (|
|00002f50| 69 6d 61 67 65 2d 3e 68 | 64 72 2e 72 6f 77 73 20 |image->h|dr.rows |
|00002f60| 3e 20 32 30 30 29 0a 58 | 09 6c 6e 67 20 3d 20 30 |> 200).X|.lng = 0|
|00002f70| 78 38 30 34 4c 3b 09 09 | 2f 2a 20 48 41 4d 20 7c |x804L;..|/* HAM ||
|00002f80| 20 4c 41 43 45 20 2a 2f | 0a 58 20 20 20 20 65 6c | LACE */|.X el|
|00002f90| 73 65 0a 58 09 6c 6e 67 | 20 3d 20 30 78 38 30 30 |se.X.lng| = 0x800|
|00002fa0| 4c 3b 09 09 2f 2a 20 48 | 41 4d 20 2a 2f 0a 58 20 |L;../* H|AM */.X |
|00002fb0| 20 20 20 66 77 72 69 74 | 65 28 26 6c 6e 67 2c 20 | fwrit|e(&lng, |
|00002fc0| 34 2c 20 31 2c 20 6f 66 | 69 6c 29 3b 0a 58 0a 58 |4, 1, of|il);.X.X|
|00002fd0| 20 20 20 20 2f 2a 20 77 | 72 69 74 65 20 6f 75 74 | /* w|rite out|
|00002fe0| 20 74 68 65 20 63 6f 6c | 6f 72 20 6c 6f 6f 6b 75 | the col|or looku|
|00002ff0| 70 20 74 61 62 6c 65 20 | 2a 2f 0a 58 20 20 20 20 |p table |*/.X |
|00003000| 73 70 72 69 6e 74 66 28 | 73 74 72 2c 20 22 43 4d |sprintf(|str, "CM|
|00003010| 41 50 22 29 3b 0a 58 20 | 20 20 20 66 77 72 69 74 |AP");.X | fwrit|
|00003020| 65 28 73 74 72 2c 20 31 | 2c 20 34 2c 20 6f 66 69 |e(str, 1|, 4, ofi|
|00003030| 6c 29 3b 0a 58 20 20 20 | 20 6c 6e 67 20 3d 20 43 |l);.X | lng = C|
|00003040| 4d 41 50 73 69 7a 65 3b | 0a 58 20 20 20 20 66 77 |MAPsize;|.X fw|
|00003050| 72 69 74 65 28 26 6c 6e | 67 2c 20 34 2c 20 31 2c |rite(&ln|g, 4, 1,|
|00003060| 20 6f 66 69 6c 29 3b 0a | 58 20 20 20 20 66 6f 72 | ofil);.|X for|
|00003070| 20 28 69 20 3d 20 30 3b | 20 69 20 3c 20 33 32 3b | (i = 0;| i < 32;|
|00003080| 20 69 2b 2b 29 20 7b 0a | 58 09 73 74 72 5b 30 5d | i++) {.|X.str[0]|
|00003090| 20 3d 20 28 63 6f 6c 6f | 72 73 74 61 74 73 5b 69 | = (colo|rstats[i|
|000030a0| 5d 5b 30 5d 20 3e 3e 20 | 34 29 20 26 20 30 78 46 |][0] >> |4) & 0xF|
|000030b0| 30 3b 0a 58 09 73 74 72 | 5b 31 5d 20 3d 20 28 63 |0;.X.str|[1] = (c|
|000030c0| 6f 6c 6f 72 73 74 61 74 | 73 5b 69 5d 5b 30 5d 29 |olorstat|s[i][0])|
|000030d0| 20 26 20 30 78 46 30 3b | 0a 58 09 73 74 72 5b 32 | & 0xF0;|.X.str[2|
|000030e0| 5d 20 3d 20 28 63 6f 6c | 6f 72 73 74 61 74 73 5b |] = (col|orstats[|
|000030f0| 69 5d 5b 30 5d 20 3c 3c | 20 34 29 20 26 20 30 78 |i][0] <<| 4) & 0x|
|00003100| 46 30 3b 0a 58 09 66 77 | 72 69 74 65 28 73 74 72 |F0;.X.fw|rite(str|
|00003110| 2c 20 31 2c 20 33 2c 20 | 6f 66 69 6c 29 3b 0a 58 |, 1, 3, |ofil);.X|
|00003120| 20 20 20 20 7d 0a 58 0a | 58 20 20 20 20 73 70 72 | }.X.|X spr|
|00003130| 69 6e 74 66 28 73 74 72 | 2c 20 22 42 4f 44 59 22 |intf(str|, "BODY"|
|00003140| 29 3b 0a 58 20 20 20 20 | 66 77 72 69 74 65 28 73 |);.X |fwrite(s|
|00003150| 74 72 2c 20 31 2c 20 34 | 2c 20 6f 66 69 6c 29 3b |tr, 1, 4|, ofil);|
|00003160| 0a 58 20 20 20 20 70 6f | 73 32 20 3d 20 66 74 65 |.X po|s2 = fte|
|00003170| 6c 6c 28 6f 66 69 6c 29 | 3b 0a 58 20 20 20 20 6c |ll(ofil)|;.X l|
|00003180| 6e 67 20 3d 20 42 4f 44 | 59 73 69 7a 65 3b 0a 58 |ng = BOD|Ysize;.X|
|00003190| 20 20 20 20 66 77 72 69 | 74 65 28 26 6c 6e 67 2c | fwri|te(&lng,|
|000031a0| 20 34 2c 20 31 2c 20 6f | 66 69 6c 29 3b 0a 58 0a | 4, 1, o|fil);.X.|
|000031b0| 58 20 20 20 20 6c 6e 67 | 20 3d 20 30 4c 3b 0a 58 |X lng| = 0L;.X|
|000031c0| 0a 58 20 20 20 20 66 6f | 72 20 28 69 20 3d 20 30 |.X fo|r (i = 0|
|000031d0| 3b 20 69 20 3c 20 69 6d | 61 67 65 2d 3e 68 64 72 |; i < im|age->hdr|
|000031e0| 2e 72 6f 77 73 3b 20 69 | 20 2b 2b 29 20 7b 0a 58 |.rows; i| ++) {.X|
|000031f0| 09 66 6f 72 20 28 6a 20 | 3d 20 30 3b 20 6a 20 3c |.for (j |= 0; j <|
|00003200| 20 64 65 70 74 68 3b 20 | 6a 2b 2b 29 20 7b 0a 58 | depth; |j++) {.X|
|00003210| 09 20 20 20 20 69 66 20 | 28 63 6f 6d 70 29 20 7b |. if |(comp) {|
|00003220| 0a 58 09 09 64 65 73 74 | 20 3d 20 64 65 73 74 62 |.X..dest| = destb|
|00003230| 75 66 3b 0a 58 09 09 77 | 72 64 20 3d 20 50 61 63 |uf;.X..w|rd = Pac|
|00003240| 6b 52 6f 77 28 26 70 6c | 61 6e 65 73 5b 6a 5d 2c |kRow(&pl|anes[j],|
|00003250| 20 26 64 65 73 74 2c 20 | 72 6f 77 5f 73 69 7a 65 | &dest, |row_size|
|00003260| 29 3b 0a 58 09 09 6c 6e | 67 20 2b 3d 20 28 6c 6f |);.X..ln|g += (lo|
|00003270| 6e 67 29 20 77 72 64 3b | 0a 58 09 09 66 77 72 69 |ng) wrd;|.X..fwri|
|00003280| 74 65 28 64 65 73 74 62 | 75 66 2c 20 31 2c 20 77 |te(destb|uf, 1, w|
|00003290| 72 64 2c 20 6f 66 69 6c | 29 3b 0a 58 09 20 20 20 |rd, ofil|);.X. |
|000032a0| 20 7d 0a 58 09 20 20 20 | 20 65 6c 73 65 20 7b 0a | }.X. | else {.|
|000032b0| 58 09 09 66 77 72 69 74 | 65 28 70 6c 61 6e 65 73 |X..fwrit|e(planes|
|000032c0| 5b 6a 5d 2c 20 31 2c 20 | 72 6f 77 5f 73 69 7a 65 |[j], 1, |row_size|
|000032d0| 2c 20 6f 66 69 6c 29 3b | 0a 58 09 09 70 6c 61 6e |, ofil);|.X..plan|
|000032e0| 65 73 5b 6a 5d 20 2b 3d | 20 72 6f 77 5f 73 69 7a |es[j] +=| row_siz|
|000032f0| 65 3b 0a 58 09 20 20 20 | 20 7d 0a 58 09 7d 0a 58 |e;.X. | }.X.}.X|
|00003300| 20 20 20 20 7d 0a 58 20 | 20 20 20 69 66 20 28 63 | }.X | if (c|
|00003310| 6f 6d 70 29 20 7b 0a 58 | 09 66 73 65 65 6b 28 6f |omp) {.X|.fseek(o|
|00003320| 66 69 6c 2c 20 28 6c 6f | 6e 67 29 20 70 6f 73 32 |fil, (lo|ng) pos2|
|00003330| 2c 20 30 29 3b 0a 58 09 | 66 77 72 69 74 65 28 26 |, 0);.X.|fwrite(&|
|00003340| 6c 6e 67 2c 20 34 2c 20 | 31 2c 20 6f 66 69 6c 29 |lng, 4, |1, ofil)|
|00003350| 3b 0a 58 09 6c 6e 67 20 | 2d 3d 20 42 4f 44 59 73 |;.X.lng |-= BODYs|
|00003360| 69 7a 65 3b 0a 58 09 6c | 6e 67 20 2b 3d 20 46 4f |ize;.X.l|ng += FO|
|00003370| 52 4d 73 69 7a 65 3b 0a | 58 09 66 73 65 65 6b 28 |RMsize;.|X.fseek(|
|00003380| 6f 66 69 6c 2c 20 28 6c | 6f 6e 67 29 20 70 6f 73 |ofil, (l|ong) pos|
|00003390| 31 2c 20 30 29 3b 0a 58 | 09 66 77 72 69 74 65 28 |1, 0);.X|.fwrite(|
|000033a0| 26 6c 6e 67 2c 20 34 2c | 20 31 2c 20 6f 66 69 6c |&lng, 4,| 1, ofil|
|000033b0| 29 3b 0a 58 20 20 20 20 | 7d 0a 58 0a 58 20 20 20 |);.X |}.X.X |
|000033c0| 20 72 65 74 75 72 6e 20 | 31 3b 0a 58 7d 0a 58 0a | return |1;.X}.X.|
|000033d0| 58 2f 2a 20 67 65 74 20 | 74 68 65 20 6e 65 78 74 |X/* get |the next|
|000033e0| 20 65 6e 63 6f 64 69 6e | 67 20 66 6f 72 20 61 20 | encodin|g for a |
|000033f0| 70 69 78 65 6c 2c 20 62 | 61 73 65 64 20 6f 6e 20 |pixel, b|ased on |
|00003400| 74 68 65 20 70 72 65 76 | 69 6f 75 73 20 70 69 78 |the prev|ious pix|
|00003410| 65 6c 20 61 6e 64 20 74 | 68 65 0a 58 20 2a 20 63 |el and t|he.X * c|
|00003420| 75 72 72 65 6e 74 20 31 | 32 20 62 69 74 20 52 47 |urrent 1|2 bit RG|
|00003430| 42 20 76 61 6c 75 65 20 | 2a 2f 0a 58 0a 58 23 64 |B value |*/.X.X#d|
|00003440| 65 66 69 6e 65 20 42 50 | 50 09 20 20 20 20 34 09 |efine BP|P. 4.|
|00003450| 09 2f 2a 20 42 69 74 73 | 20 70 65 72 20 70 69 78 |./* Bits| per pix|
|00003460| 65 6c 20 2a 2f 0a 58 23 | 64 65 66 69 6e 65 20 4d |el */.X#|define M|
|00003470| 41 58 47 52 41 59 09 20 | 20 20 20 28 31 20 3c 3c |AXGRAY. | (1 <<|
|00003480| 20 42 50 50 29 0a 58 23 | 64 65 66 69 6e 65 09 41 | BPP).X#|define.A|
|00003490| 42 53 28 78 29 09 20 20 | 20 20 28 28 78 29 20 3c |BS(x). | ((x) <|
|000034a0| 20 30 20 3f 20 2d 28 78 | 29 20 3a 20 28 78 29 29 | 0 ? -(x|) : (x))|
|000034b0| 0a 58 0a 58 2f 2a 2d 0a | 58 20 2a 09 66 69 72 73 |.X.X/*-.|X *.firs|
|000034c0| 74 2c 20 63 68 65 63 6b | 20 74 6f 20 73 65 65 20 |t, check| to see |
|000034d0| 69 66 20 70 69 78 65 6c | 20 69 73 20 74 68 65 20 |if pixel| is the |
|000034e0| 73 61 6d 65 20 63 6f 6c | 6f 72 2e 20 69 66 20 73 |same col|or. if s|
|000034f0| 6f 2c 20 72 65 74 75 72 | 6e 0a 58 20 2a 09 63 68 |o, retur|n.X *.ch|
|00003500| 65 63 6b 20 69 66 20 6f | 6e 6c 79 20 6f 6e 65 20 |eck if o|nly one |
|00003510| 6f 66 20 52 2c 20 47 2c | 20 42 20 68 61 76 65 20 |of R, G,| B have |
|00003520| 63 68 61 6e 67 65 64 2e | 20 69 66 20 73 6f 2c 20 |changed.| if so, |
|00003530| 72 65 74 75 72 6e 20 6e | 65 77 20 70 69 78 65 6c |return n|ew pixel|
|00003540| 2e 0a 58 20 2a 09 66 69 | 6e 64 20 63 6c 6f 73 65 |..X *.fi|nd close|
|00003550| 73 74 20 65 6e 74 72 79 | 20 69 6e 20 63 6f 6c 6f |st entry| in colo|
|00003560| 72 6d 61 70 2e 20 69 66 | 20 65 78 61 63 74 20 6d |rmap. if| exact m|
|00003570| 61 74 63 68 2c 20 72 65 | 74 75 72 6e 20 69 74 2e |atch, re|turn it.|
|00003580| 0a 58 20 2a 09 6d 6f 64 | 69 66 79 20 6f 6e 65 20 |.X *.mod|ify one |
|00003590| 6f 66 20 52 2c 20 47 2c | 20 42 20 28 77 68 69 63 |of R, G,| B (whic|
|000035a0| 68 65 76 65 72 20 64 69 | 66 66 65 72 65 6e 63 65 |hever di|fference|
|000035b0| 20 69 73 20 6c 61 72 67 | 65 73 74 29 0a 58 20 2a | is larg|est).X *|
|000035c0| 09 63 6f 6d 70 61 72 65 | 20 70 72 65 76 69 6f 75 |.compare| previou|
|000035d0| 73 20 63 61 6c 63 75 6c | 61 74 69 6f 6e 20 74 6f |s calcul|ation to|
|000035e0| 20 62 65 73 74 20 6d 61 | 74 63 68 20 69 6e 20 63 | best ma|tch in c|
|000035f0| 6f 6c 6f 72 20 74 61 62 | 6c 65 2e 20 72 65 74 75 |olor tab|le. retu|
|00003600| 72 6e 0a 58 20 2a 09 20 | 20 20 20 77 68 69 63 68 |rn.X *. | which|
|00003610| 65 76 65 72 20 69 73 20 | 61 20 62 65 74 74 65 72 |ever is |a better|
|00003620| 20 6d 61 74 63 68 2e 0a | 58 2d 2a 2f 0a 58 67 65 | match..|X-*/.Xge|
|00003630| 74 63 6f 6c 6f 72 28 70 | 70 69 78 2c 20 63 72 67 |tcolor(p|pix, crg|
|00003640| 62 2c 20 70 72 67 62 29 | 0a 58 69 6e 74 20 20 20 |b, prgb)|.Xint |
|00003650| 20 20 20 20 20 20 20 20 | 20 20 70 70 69 78 2c 20 | | ppix, |
|00003660| 2a 63 72 67 62 2c 20 70 | 72 67 62 3b 0a 58 7b 0a |*crgb, p|rgb;.X{.|
|00003670| 58 20 20 20 20 69 6e 74 | 20 20 20 20 20 20 20 20 |X int| |
|00003680| 20 20 20 20 20 69 2c 20 | 6a 2c 20 76 61 6c 2c 20 | i, |j, val, |
|00003690| 63 72 2c 20 63 67 2c 20 | 63 62 2c 20 70 72 2c 20 |cr, cg, |cb, pr, |
|000036a0| 70 67 2c 20 70 62 2c 20 | 6e 72 2c 20 6e 67 2c 20 |pg, pb, |nr, ng, |
|000036b0| 6e 62 2c 20 62 65 73 74 | 2c 20 64 69 73 74 2c 20 |nb, best|, dist, |
|000036c0| 6e 72 67 62 3b 0a 58 0a | 58 20 20 20 20 2f 2a 20 |nrgb;.X.|X /* |
|000036d0| 69 66 20 73 61 6d 65 20 | 63 6f 6c 6f 72 2c 20 74 |if same |color, t|
|000036e0| 68 65 6e 20 64 6f 20 61 | 20 4e 4f 4f 50 20 28 73 |hen do a| NOOP (s|
|000036f0| 61 6d 65 20 61 73 20 70 | 72 65 76 69 6f 75 73 20 |ame as p|revious |
|00003700| 70 69 78 65 6c 29 20 2a | 2f 0a 58 20 20 20 20 69 |pixel) *|/.X i|
|00003710| 66 20 28 2a 63 72 67 62 | 20 3d 3d 20 70 72 67 62 |f (*crgb| == prgb|
|00003720| 29 0a 58 09 72 65 74 75 | 72 6e 20 28 70 70 69 78 |).X.retu|rn (ppix|
|00003730| 29 3b 0a 58 0a 58 20 20 | 20 20 2f 2a 20 73 65 74 |);.X.X | /* set|
|00003740| 20 75 70 20 66 6f 72 20 | 63 6f 6d 70 61 72 69 73 | up for |comparis|
|00003750| 6f 6e 73 20 2a 2f 0a 58 | 20 20 20 20 63 62 20 3d |ons */.X| cb =|
|00003760| 20 2a 63 72 67 62 20 26 | 20 28 4d 41 58 47 52 41 | *crgb &| (MAXGRA|
|00003770| 59 20 2d 20 31 29 3b 0a | 58 20 20 20 20 63 67 20 |Y - 1);.|X cg |
|00003780| 3d 20 28 2a 63 72 67 62 | 20 3e 3e 20 42 50 50 29 |= (*crgb| >> BPP)|
|00003790| 20 26 20 28 4d 41 58 47 | 52 41 59 20 2d 20 31 29 | & (MAXG|RAY - 1)|
|000037a0| 3b 0a 58 20 20 20 20 63 | 72 20 3d 20 28 2a 63 72 |;.X c|r = (*cr|
|000037b0| 67 62 20 3e 3e 20 28 42 | 50 50 20 2a 20 32 29 29 |gb >> (B|PP * 2))|
|000037c0| 20 26 20 28 4d 41 58 47 | 52 41 59 20 2d 20 31 29 | & (MAXG|RAY - 1)|
|000037d0| 3b 0a 58 0a 58 20 20 20 | 20 70 62 20 3d 20 70 72 |;.X.X | pb = pr|
|000037e0| 67 62 20 26 20 28 4d 41 | 58 47 52 41 59 20 2d 20 |gb & (MA|XGRAY - |
|000037f0| 31 29 3b 0a 58 20 20 20 | 20 70 67 20 3d 20 28 70 |1);.X | pg = (p|
|00003800| 72 67 62 20 3e 3e 20 42 | 50 50 29 20 26 20 28 4d |rgb >> B|PP) & (M|
|00003810| 41 58 47 52 41 59 20 2d | 20 31 29 3b 0a 58 20 20 |AXGRAY -| 1);.X |
|00003820| 20 20 70 72 20 3d 20 28 | 70 72 67 62 20 3e 3e 20 | pr = (|prgb >> |
|00003830| 28 42 50 50 20 2a 20 32 | 29 29 20 26 20 28 4d 41 |(BPP * 2|)) & (MA|
|00003840| 58 47 52 41 59 20 2d 20 | 31 29 3b 0a 58 0a 58 20 |XGRAY - |1);.X.X |
|00003850| 20 20 20 2f 2a 20 73 65 | 65 20 69 66 20 6f 6e 6c | /* se|e if onl|
|00003860| 79 20 6f 6e 65 20 70 6c | 61 6e 65 20 63 68 61 6e |y one pl|ane chan|
|00003870| 67 65 64 2c 20 69 66 20 | 73 6f 2c 20 75 73 65 20 |ged, if |so, use |
|00003880| 48 41 4d 20 65 6e 63 6f | 64 69 6e 67 20 2a 2f 0a |HAM enco|ding */.|
|00003890| 58 20 20 20 20 69 66 20 | 28 70 72 67 62 20 21 3d |X if |(prgb !=|
|000038a0| 20 2d 31 29 20 7b 0a 58 | 09 69 66 20 28 70 72 20 | -1) {.X|.if (pr |
|000038b0| 3d 3d 20 63 72 20 26 26 | 20 70 67 20 3d 3d 20 63 |== cr &&| pg == c|
|000038c0| 67 29 0a 58 09 20 20 20 | 20 72 65 74 75 72 6e 20 |g).X. | return |
|000038d0| 28 63 62 20 2b 20 30 78 | 31 30 29 3b 0a 58 09 69 |(cb + 0x|10);.X.i|
|000038e0| 66 20 28 70 72 20 3d 3d | 20 63 72 20 26 26 20 70 |f (pr ==| cr && p|
|000038f0| 62 20 3d 3d 20 63 62 29 | 0a 58 09 20 20 20 20 72 |b == cb)|.X. r|
|00003900| 65 74 75 72 6e 20 28 63 | 67 20 2b 20 30 78 33 30 |eturn (c|g + 0x30|
|00003910| 29 3b 0a 58 09 69 66 20 | 28 70 67 20 3d 3d 20 63 |);.X.if |(pg == c|
|00003920| 67 20 26 26 20 70 62 20 | 3d 3d 20 63 62 29 0a 58 |g && pb |== cb).X|
|00003930| 09 20 20 20 20 72 65 74 | 75 72 6e 20 28 63 72 20 |. ret|urn (cr |
|00003940| 2b 20 30 78 32 30 29 3b | 0a 58 20 20 20 20 7d 0a |+ 0x20);|.X }.|
|00003950| 58 0a 58 20 20 20 20 2f | 2a 20 65 6c 73 65 20 6c |X.X /|* else l|
|00003960| 6f 6f 6b 20 66 6f 72 20 | 61 6e 20 65 78 61 63 74 |ook for |an exact|
|00003970| 20 6d 61 74 63 68 20 69 | 6e 20 74 68 65 20 63 6f | match i|n the co|
|00003980| 6c 6f 72 20 74 61 62 6c | 65 20 28 6f 72 20 6d 69 |lor tabl|e (or mi|
|00003990| 6e 69 6d 61 6c 20 64 69 | 73 74 61 6e 63 65 29 20 |nimal di|stance) |
|000039a0| 2a 2f 0a 58 20 20 20 20 | 66 6f 72 20 28 69 20 3d |*/.X |for (i =|
|000039b0| 20 30 3b 20 69 20 3c 20 | 63 6f 6c 6f 72 73 3b 20 | 0; i < |colors; |
|000039c0| 69 2b 2b 29 20 7b 0a 58 | 09 69 66 20 28 63 6f 6c |i++) {.X|.if (col|
|000039d0| 6f 72 73 74 61 74 73 5b | 69 5d 5b 30 5d 20 3d 3d |orstats[|i][0] ==|
|000039e0| 20 2a 63 72 67 62 29 0a | 58 09 20 20 20 20 72 65 | *crgb).|X. re|
|000039f0| 74 75 72 6e 20 28 69 29 | 3b 0a 58 09 69 66 20 28 |turn (i)|;.X.if (|
|00003a00| 69 20 3d 3d 20 30 29 20 | 7b 0a 58 09 20 20 20 20 |i == 0) |{.X. |
|00003a10| 62 65 73 74 20 3d 20 30 | 3b 0a 58 09 20 20 20 20 |best = 0|;.X. |
|00003a20| 64 69 73 74 20 3d 20 64 | 69 73 74 61 6e 63 65 28 |dist = d|istance(|
|00003a30| 63 6f 6c 6f 72 73 74 61 | 74 73 5b 69 5d 5b 30 5d |colorsta|ts[i][0]|
|00003a40| 2c 20 2a 63 72 67 62 29 | 3b 0a 58 09 7d 0a 58 09 |, *crgb)|;.X.}.X.|
|00003a50| 65 6c 73 65 20 69 66 20 | 28 28 6a 20 3d 20 64 69 |else if |((j = di|
|00003a60| 73 74 61 6e 63 65 28 63 | 6f 6c 6f 72 73 74 61 74 |stance(c|olorstat|
|00003a70| 73 5b 69 5d 5b 30 5d 2c | 20 2a 63 72 67 62 29 29 |s[i][0],| *crgb))|
|00003a80| 20 3c 20 64 69 73 74 29 | 20 7b 0a 58 09 20 20 20 | < dist)| {.X. |
|00003a90| 20 62 65 73 74 20 3d 20 | 69 3b 0a 58 09 20 20 20 | best = |i;.X. |
|00003aa0| 20 64 69 73 74 20 3d 20 | 6a 3b 0a 58 09 7d 0a 58 | dist = |j;.X.}.X|
|00003ab0| 20 20 20 20 7d 0a 58 0a | 58 20 20 20 20 2f 2a 20 | }.X.|X /* |
|00003ac0| 64 6f 20 61 20 66 6f 72 | 63 65 64 20 61 62 73 6f |do a for|ced abso|
|00003ad0| 6c 75 74 65 20 2a 2f 0a | 58 20 20 20 20 69 66 20 |lute */.|X if |
|00003ae0| 28 70 72 67 62 20 3d 3d | 20 2d 31 29 20 7b 0a 58 |(prgb ==| -1) {.X|
|00003af0| 09 2a 63 72 67 62 20 3d | 20 63 6f 6c 6f 72 73 74 |.*crgb =| colorst|
|00003b00| 61 74 73 5b 62 65 73 74 | 5d 5b 30 5d 3b 0a 58 09 |ats[best|][0];.X.|
|00003b10| 72 65 74 75 72 6e 20 28 | 62 65 73 74 29 3b 0a 58 |return (|best);.X|
|00003b20| 20 20 20 20 7d 0a 58 0a | 58 20 20 20 20 2f 2a 20 | }.X.|X /* |
|00003b30| 66 69 6e 64 20 77 68 69 | 63 68 20 63 6f 6c 6f 72 |find whi|ch color|
|00003b40| 20 69 73 20 6f 66 66 20 | 74 68 65 20 6d 6f 73 74 | is off |the most|
|00003b50| 20 66 72 6f 6d 20 70 72 | 65 76 69 6f 75 73 20 2a | from pr|evious *|
|00003b60| 2f 0a 58 20 20 20 20 69 | 20 3d 20 30 3b 0a 58 20 |/.X i| = 0;.X |
|00003b70| 20 20 20 76 61 6c 20 3d | 20 41 42 53 28 63 72 20 | val =| ABS(cr |
|00003b80| 2d 20 70 72 29 3b 0a 58 | 20 20 20 20 69 66 20 28 |- pr);.X| if (|
|00003b90| 41 42 53 28 63 67 20 2d | 20 70 67 29 20 3e 20 76 |ABS(cg -| pg) > v|
|00003ba0| 61 6c 29 20 7b 0a 58 09 | 69 20 3d 20 31 3b 0a 58 |al) {.X.|i = 1;.X|
|00003bb0| 09 76 61 6c 20 3d 20 41 | 42 53 28 63 67 20 2d 20 |.val = A|BS(cg - |
|00003bc0| 70 67 29 3b 0a 58 20 20 | 20 20 7d 0a 58 20 20 20 |pg);.X | }.X |
|00003bd0| 20 69 66 20 28 41 42 53 | 28 63 62 20 2d 20 70 62 | if (ABS|(cb - pb|
|00003be0| 29 20 3e 20 76 61 6c 29 | 20 7b 0a 58 09 69 20 3d |) > val)| {.X.i =|
|00003bf0| 20 32 3b 0a 58 09 76 61 | 6c 20 3d 20 41 42 53 28 | 2;.X.va|l = ABS(|
|00003c00| 63 62 20 2d 20 70 62 29 | 3b 0a 58 20 20 20 20 7d |cb - pb)|;.X }|
|00003c10| 0a 58 0a 58 20 20 20 20 | 6e 72 20 3d 20 70 72 3b |.X.X |nr = pr;|
|00003c20| 0a 58 20 20 20 20 6e 67 | 20 3d 20 70 67 3b 0a 58 |.X ng| = pg;.X|
|00003c30| 20 20 20 20 6e 62 20 3d | 20 70 62 3b 0a 58 20 20 | nb =| pb;.X |
|00003c40| 20 20 73 77 69 74 63 68 | 20 28 69 29 20 7b 0a 58 | switch| (i) {.X|
|00003c50| 20 20 20 20 63 61 73 65 | 20 30 3a 0a 58 09 6e 72 | case| 0:.X.nr|
|00003c60| 20 3d 20 63 72 3b 0a 58 | 09 76 61 6c 20 3d 20 6e | = cr;.X|.val = n|
|00003c70| 72 20 2b 20 30 78 32 30 | 3b 0a 58 09 62 72 65 61 |r + 0x20|;.X.brea|
|00003c80| 6b 3b 0a 58 20 20 20 20 | 63 61 73 65 20 31 3a 0a |k;.X |case 1:.|
|00003c90| 58 09 6e 67 20 3d 20 63 | 67 3b 0a 58 09 76 61 6c |X.ng = c|g;.X.val|
|00003ca0| 20 3d 20 6e 67 20 2b 20 | 30 78 33 30 3b 0a 58 09 | = ng + |0x30;.X.|
|00003cb0| 62 72 65 61 6b 3b 0a 58 | 20 20 20 20 63 61 73 65 |break;.X| case|
|00003cc0| 20 32 3a 0a 58 09 6e 62 | 20 3d 20 63 62 3b 0a 58 | 2:.X.nb| = cb;.X|
|00003cd0| 09 76 61 6c 20 3d 20 6e | 62 20 2b 20 30 78 31 30 |.val = n|b + 0x10|
|00003ce0| 3b 0a 58 09 62 72 65 61 | 6b 3b 0a 58 20 20 20 20 |;.X.brea|k;.X |
|00003cf0| 7d 0a 58 20 20 20 20 6e | 72 67 62 20 3d 20 28 6e |}.X n|rgb = (n|
|00003d00| 72 20 3c 3c 20 28 32 20 | 2a 20 42 50 50 29 29 20 |r << (2 |* BPP)) |
|00003d10| 2b 20 28 6e 67 20 3c 3c | 20 42 50 50 29 20 2b 20 |+ (ng <<| BPP) + |
|00003d20| 6e 62 3b 0a 58 0a 58 20 | 20 20 20 2f 2a 20 6e 6f |nb;.X.X | /* no|
|00003d30| 77 20 70 69 63 6b 20 74 | 68 65 20 62 65 73 74 20 |w pick t|he best |
|00003d40| 2a 2f 0a 58 20 20 20 20 | 69 66 20 28 64 69 73 74 |*/.X |if (dist|
|00003d50| 61 6e 63 65 28 6e 72 67 | 62 2c 20 2a 63 72 67 62 |ance(nrg|b, *crgb|
|00003d60| 29 20 3c 20 64 69 73 74 | 29 20 7b 0a 58 0a 58 09 |) < dist|) {.X.X.|
|00003d70| 2f 2a 20 64 6f 20 61 20 | 62 65 73 74 20 72 65 6c |/* do a |best rel|
|00003d80| 61 74 69 76 65 20 2a 2f | 0a 58 09 2a 63 72 67 62 |ative */|.X.*crgb|
|00003d90| 20 3d 20 6e 72 67 62 3b | 0a 58 09 72 65 74 75 72 | = nrgb;|.X.retur|
|00003da0| 6e 20 28 76 61 6c 29 3b | 0a 58 20 20 20 20 7d 0a |n (val);|.X }.|
|00003db0| 58 0a 58 20 20 20 20 2f | 2a 20 64 6f 20 61 20 62 |X.X /|* do a b|
|00003dc0| 65 73 74 20 61 62 73 6f | 6c 75 74 65 20 2a 2f 0a |est abso|lute */.|
|00003dd0| 58 20 20 20 20 2a 63 72 | 67 62 20 3d 20 63 6f 6c |X *cr|gb = col|
|00003de0| 6f 72 73 74 61 74 73 5b | 62 65 73 74 5d 5b 30 5d |orstats[|best][0]|
|00003df0| 3b 0a 58 20 20 20 20 72 | 65 74 75 72 6e 20 28 62 |;.X r|eturn (b|
|00003e00| 65 73 74 29 3b 0a 58 7d | 0a 58 0a 58 2f 2a 20 63 |est);.X}|.X.X/* c|
|00003e10| 61 6c 63 75 6c 61 74 65 | 20 64 69 73 74 61 6e 63 |alculate| distanc|
|00003e20| 65 20 62 65 74 77 65 65 | 6e 20 74 77 6f 20 63 6f |e betwee|n two co|
|00003e30| 6c 6f 72 73 20 69 6e 20 | 33 44 20 73 70 61 63 65 |lors in |3D space|
|00003e40| 20 2a 2f 0a 58 64 69 73 | 74 61 6e 63 65 28 61 72 | */.Xdis|tance(ar|
|00003e50| 67 62 2c 20 62 72 67 62 | 29 0a 58 7b 0a 58 20 20 |gb, brgb|).X{.X |
|00003e60| 20 20 69 6e 74 20 20 20 | 20 20 20 20 20 20 20 20 | int | |
|00003e70| 20 20 62 2c 20 67 2c 20 | 72 3b 0a 58 0a 58 20 20 | b, g, |r;.X.X |
|00003e80| 20 20 2f 2a 20 73 65 74 | 20 75 70 20 66 6f 72 20 | /* set| up for |
|00003e90| 63 6f 6d 70 61 72 69 73 | 6f 6e 73 20 2a 2f 0a 58 |comparis|ons */.X|
|00003ea0| 20 20 20 20 62 20 3d 20 | 61 72 67 62 20 26 20 28 | b = |argb & (|
|00003eb0| 4d 41 58 47 52 41 59 20 | 2d 20 31 29 3b 0a 58 20 |MAXGRAY |- 1);.X |
|00003ec0| 20 20 20 67 20 3d 20 28 | 61 72 67 62 20 3e 3e 20 | g = (|argb >> |
|00003ed0| 42 50 50 29 20 26 20 28 | 4d 41 58 47 52 41 59 20 |BPP) & (|MAXGRAY |
|00003ee0| 2d 20 31 29 3b 0a 58 20 | 20 20 20 72 20 3d 20 28 |- 1);.X | r = (|
|00003ef0| 61 72 67 62 20 3e 3e 20 | 28 42 50 50 20 2a 20 32 |argb >> |(BPP * 2|
|00003f00| 29 29 20 26 20 28 4d 41 | 58 47 52 41 59 20 2d 20 |)) & (MA|XGRAY - |
|00003f10| 31 29 3b 0a 58 0a 58 20 | 20 20 20 62 20 2d 3d 20 |1);.X.X | b -= |
|00003f20| 62 72 67 62 20 26 20 28 | 4d 41 58 47 52 41 59 20 |brgb & (|MAXGRAY |
|00003f30| 2d 20 31 29 3b 0a 58 20 | 20 20 20 67 20 2d 3d 20 |- 1);.X | g -= |
|00003f40| 28 62 72 67 62 20 3e 3e | 20 42 50 50 29 20 26 20 |(brgb >>| BPP) & |
|00003f50| 28 4d 41 58 47 52 41 59 | 20 2d 20 31 29 3b 0a 58 |(MAXGRAY| - 1);.X|
|00003f60| 20 20 20 20 72 20 2d 3d | 20 28 62 72 67 62 20 3e | r -=| (brgb >|
|00003f70| 3e 20 28 42 50 50 20 2a | 20 32 29 29 20 26 20 28 |> (BPP *| 2)) & (|
|00003f80| 4d 41 58 47 52 41 59 20 | 2d 20 31 29 3b 0a 58 0a |MAXGRAY |- 1);.X.|
|00003f90| 58 20 20 20 20 72 65 74 | 75 72 6e 20 28 72 20 2a |X ret|urn (r *|
|00003fa0| 20 72 20 2b 20 67 20 2a | 20 67 20 2b 20 62 20 2a | r + g *| g + b *|
|00003fb0| 20 62 29 3b 0a 58 7d 0a | 45 4e 44 5f 4f 46 5f 46 | b);.X}.|END_OF_F|
|00003fc0| 49 4c 45 0a 69 66 20 74 | 65 73 74 20 31 34 37 36 |ILE.if t|est 1476|
|00003fd0| 35 20 2d 6e 65 20 60 77 | 63 20 2d 63 20 3c 27 66 |5 -ne `w|c -c <'f|
|00003fe0| 62 68 61 6d 2e 63 27 60 | 3b 20 74 68 65 6e 0a 20 |bham.c'`|; then. |
|00003ff0| 20 20 20 65 63 68 6f 20 | 73 68 61 72 3a 20 5c 22 | echo |shar: \"|
|00004000| 27 66 62 68 61 6d 2e 63 | 27 5c 22 20 75 6e 70 61 |'fbham.c|'\" unpa|
|00004010| 63 6b 65 64 20 77 69 74 | 68 20 77 72 6f 6e 67 20 |cked wit|h wrong |
|00004020| 73 69 7a 65 21 0a 66 69 | 0a 23 20 65 6e 64 20 6f |size!.fi|.# end o|
|00004030| 66 20 27 66 62 68 61 6d | 2e 63 27 0a 66 69 0a 69 |f 'fbham|.c'.fi.i|
|00004040| 66 20 74 65 73 74 20 2d | 66 20 27 66 6c 67 69 66 |f test -|f 'flgif|
|00004050| 72 2e 63 27 20 2d 61 20 | 22 24 7b 31 7d 22 20 21 |r.c' -a |"${1}" !|
|00004060| 3d 20 22 2d 63 22 20 3b | 20 74 68 65 6e 20 0a 20 |= "-c" ;| then . |
|00004070| 20 65 63 68 6f 20 73 68 | 61 72 3a 20 57 69 6c 6c | echo sh|ar: Will|
|00004080| 20 6e 6f 74 20 63 6c 6f | 62 62 65 72 20 65 78 69 | not clo|bber exi|
|00004090| 73 74 69 6e 67 20 66 69 | 6c 65 20 5c 22 27 66 6c |sting fi|le \"'fl|
|000040a0| 67 69 66 72 2e 63 27 5c | 22 0a 65 6c 73 65 0a 65 |gifr.c'\|".else.e|
|000040b0| 63 68 6f 20 73 68 61 72 | 3a 20 45 78 74 72 61 63 |cho shar|: Extrac|
|000040c0| 74 69 6e 67 20 5c 22 27 | 66 6c 67 69 66 72 2e 63 |ting \"'|flgifr.c|
|000040d0| 27 5c 22 20 5c 28 31 33 | 36 37 32 20 63 68 61 72 |'\" \(13|672 char|
|000040e0| 61 63 74 65 72 73 5c 29 | 0a 73 65 64 20 22 73 2f |acters\)|.sed "s/|
|000040f0| 5e 58 2f 2f 22 20 3e 27 | 66 6c 67 69 66 72 2e 63 |^X//" >'|flgifr.c|
|00004100| 27 20 3c 3c 27 45 4e 44 | 5f 4f 46 5f 46 49 4c 45 |' <<'END|_OF_FILE|
|00004110| 27 0a 58 2f 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |'.X/****|********|
|00004120| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004130| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004140| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004150| 2a 2a 2a 2a 2a 0a 58 20 | 2a 20 66 6c 67 69 66 72 |*****.X |* flgifr|
|00004160| 2e 63 3a 20 46 42 4d 20 | 4c 69 62 72 61 72 79 20 |.c: FBM |Library |
|00004170| 30 2e 39 31 20 28 42 65 | 74 61 20 74 65 73 74 29 |0.91 (Be|ta test)|
|00004180| 20 32 36 2d 41 70 72 2d | 38 39 20 20 4d 69 63 68 | 26-Apr-|89 Mich|
|00004190| 61 65 6c 20 4d 61 75 6c | 64 69 6e 0a 58 20 2a 0a |ael Maul|din.X *.|
|000041a0| 58 20 2a 20 43 6f 70 79 | 72 69 67 68 74 20 28 43 |X * Copy|right (C|
|000041b0| 29 20 31 39 38 39 20 62 | 79 20 4d 69 63 68 61 65 |) 1989 b|y Michae|
|000041c0| 6c 20 4d 61 75 6c 64 69 | 6e 2e 20 20 50 65 72 6d |l Mauldi|n. Perm|
|000041d0| 69 73 73 69 6f 6e 20 69 | 73 20 67 72 61 6e 74 65 |ission i|s grante|
|000041e0| 64 20 74 6f 0a 58 20 2a | 20 75 73 65 20 74 68 69 |d to.X *| use thi|
|000041f0| 73 20 66 69 6c 65 20 69 | 6e 20 77 68 6f 6c 65 20 |s file i|n whole |
|00004200| 6f 72 20 69 6e 20 70 61 | 72 74 20 70 72 6f 76 69 |or in pa|rt provi|
|00004210| 64 65 64 20 74 68 61 74 | 20 79 6f 75 20 64 6f 20 |ded that| you do |
|00004220| 6e 6f 74 20 73 65 6c 6c | 20 69 74 0a 58 20 2a 20 |not sell| it.X * |
|00004230| 66 6f 72 20 70 72 6f 66 | 69 74 20 61 6e 64 20 74 |for prof|it and t|
|00004240| 68 61 74 20 74 68 69 73 | 20 63 6f 70 79 72 69 67 |hat this| copyrig|
|00004250| 68 74 20 6e 6f 74 69 63 | 65 20 69 73 20 72 65 74 |ht notic|e is ret|
|00004260| 61 69 6e 65 64 20 75 6e | 63 68 61 6e 67 65 64 2e |ained un|changed.|
|00004270| 0a 58 20 2a 0a 58 20 2a | 20 44 65 72 69 76 65 64 |.X *.X *| Derived|
|00004280| 20 66 72 6f 6d 20 27 67 | 69 66 74 6f 72 6c 65 27 | from 'g|iftorle'|
|00004290| 2c 20 77 72 69 74 74 65 | 6e 20 62 79 20 44 61 76 |, writte|n by Dav|
|000042a0| 69 64 20 4b 6f 62 6c 61 | 73 0a 58 20 2a 0a 58 20 |id Kobla|s.X *.X |
|000042b0| 2a 20 2b 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |* +-----|--------|
|000042c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000042d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000042e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000042f0| 2d 2d 2d 2d 2d 2b 20 0a | 58 20 2a 20 7c 20 43 6f |-----+ .|X * | Co|
|00004300| 70 79 72 69 67 68 74 20 | 31 39 38 39 2c 20 44 61 |pyright |1989, Da|
|00004310| 76 69 64 20 4b 6f 62 6c | 61 73 2e 20 20 20 20 20 |vid Kobl|as. |
|00004320| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004330| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 7c | | ||
|00004340| 20 0a 58 20 2a 20 7c 20 | 20 20 59 6f 75 20 6d 61 | .X * | | You ma|
|00004350| 79 20 63 6f 70 79 20 74 | 68 69 73 20 66 69 6c 65 |y copy t|his file|
|00004360| 20 69 6e 20 77 68 6f 6c | 65 20 6f 72 20 69 6e 20 | in whol|e or in |
|00004370| 70 61 72 74 20 61 73 20 | 6c 6f 6e 67 20 61 73 20 |part as |long as |
|00004380| 79 6f 75 20 20 20 20 20 | 20 7c 20 0a 58 20 2a 20 |you | | .X * |
|00004390| 7c 20 20 20 64 6f 6e 27 | 74 20 74 72 79 20 74 6f || don'|t try to|
|000043a0| 20 6d 61 6b 65 20 6d 6f | 6e 65 79 20 6f 66 66 20 | make mo|ney off |
|000043b0| 69 74 2c 20 6f 72 20 70 | 72 65 74 65 6e 64 20 74 |it, or p|retend t|
|000043c0| 68 61 74 20 79 6f 75 20 | 77 72 6f 74 65 20 69 74 |hat you |wrote it|
|000043d0| 2e 20 20 7c 20 0a 58 20 | 2a 20 2b 2d 2d 2d 2d 2d |. | .X |* +-----|
|000043e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000043f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004400| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004410| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2b 20 0a |--------|-----+ .|
|00004420| 58 20 2a 0a 58 20 2a 20 | 66 6c 67 69 66 72 2e 63 |X *.X * |flgifr.c|
|00004430| 3a 0a 58 20 2a 0a 58 20 | 2a 20 43 4f 4e 54 45 4e |:.X *.X |* CONTEN|
|00004440| 54 53 0a 58 20 2a 09 72 | 65 61 64 5f 67 69 66 20 |TS.X *.r|ead_gif |
|00004450| 28 69 6d 61 67 65 2c 20 | 73 74 72 65 61 6d 2c 20 |(image, |stream, |
|00004460| 6d 73 74 72 2c 20 6d 6c | 65 6e 29 0a 58 20 2a 0a |mstr, ml|en).X *.|
|00004470| 58 20 2a 20 48 49 53 54 | 4f 52 59 0a 58 20 2a 20 |X * HIST|ORY.X * |
|00004480| 32 36 2d 41 70 72 2d 38 | 39 20 20 4d 69 63 68 61 |26-Apr-8|9 Micha|
|00004490| 65 6c 20 4d 61 75 6c 64 | 69 6e 20 28 6d 6c 6d 29 |el Mauld|in (mlm)|
|000044a0| 20 61 74 20 43 61 72 6e | 65 67 69 65 20 4d 65 6c | at Carn|egie Mel|
|000044b0| 6c 6f 6e 20 55 6e 69 76 | 65 72 73 69 74 79 0a 58 |lon Univ|ersity.X|
|000044c0| 20 2a 09 42 65 74 61 20 | 72 65 6c 65 61 73 65 20 | *.Beta |release |
|000044d0| 28 76 65 72 73 69 6f 6e | 20 30 2e 39 31 29 20 6d |(version| 0.91) m|
|000044e0| 6c 6d 40 63 73 2e 63 6d | 75 2e 65 64 75 0a 58 20 |lm@cs.cm|u.edu.X |
|000044f0| 2a 0a 58 20 2a 20 31 39 | 2d 46 65 62 2d 38 39 20 |*.X * 19|-Feb-89 |
|00004500| 20 4d 69 63 68 61 65 6c | 20 4d 61 75 6c 64 69 6e | Michael| Mauldin|
|00004510| 20 28 6d 6c 6d 29 20 61 | 74 20 43 61 72 6e 65 67 | (mlm) a|t Carneg|
|00004520| 69 65 20 4d 65 6c 6c 6f | 6e 20 55 6e 69 76 65 72 |ie Mello|n Univer|
|00004530| 73 69 74 79 0a 58 20 2a | 09 43 68 61 6e 67 65 64 |sity.X *|.Changed|
|00004540| 20 6e 61 6d 65 20 74 6f | 20 66 6c 67 69 66 72 20 | name to| flgifr |
|00004550| 66 72 6f 6d 20 66 6c 67 | 69 66 20 28 73 69 6e 63 |from flg|if (sinc|
|00004560| 65 20 74 68 65 72 65 20 | 69 73 20 6e 6f 77 20 61 |e there |is now a|
|00004570| 6e 20 66 6c 67 69 66 77 | 29 0a 58 20 2a 0a 58 20 |n flgifw|).X *.X |
|00004580| 2a 20 31 33 2d 46 65 62 | 2d 38 39 20 20 4d 69 63 |* 13-Feb|-89 Mic|
|00004590| 68 61 65 6c 20 4d 61 75 | 6c 64 69 6e 20 28 6d 6c |hael Mau|ldin (ml|
|000045a0| 6d 29 20 61 74 20 43 61 | 72 6e 65 67 69 65 20 4d |m) at Ca|rnegie M|
|000045b0| 65 6c 6c 6f 6e 20 55 6e | 69 76 65 72 73 69 74 79 |ellon Un|iversity|
|000045c0| 0a 58 20 2a 09 4d 6f 64 | 69 66 69 65 64 20 66 72 |.X *.Mod|ified fr|
|000045d0| 6f 6d 20 67 69 66 32 72 | 6c 65 20 70 72 6f 67 72 |om gif2r|le progr|
|000045e0| 61 6d 20 43 6f 70 79 72 | 69 67 68 74 20 31 39 38 |am Copyr|ight 198|
|000045f0| 39 20 62 79 20 44 61 76 | 69 64 20 4b 6f 62 6c 61 |9 by Dav|id Kobla|
|00004600| 73 2e 0a 58 20 2a 09 43 | 6f 6e 76 65 72 74 65 64 |s..X *.C|onverted|
|00004610| 20 74 6f 20 70 72 6f 64 | 75 63 65 20 46 42 4d 20 | to prod|uce FBM |
|00004620| 69 6d 61 67 65 20 66 6f | 72 6d 61 74 20 69 6e 20 |image fo|rmat in |
|00004630| 6d 65 6d 6f 72 79 2e 0a | 58 20 2a 0a 58 20 2a 0a |memory..|X *.X *.|
|00004640| 58 20 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X ******|********|
|00004650| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004660| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004670| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004680| 2a 2a 2a 2f 0a 58 0a 58 | 23 20 69 6e 63 6c 75 64 |***/.X.X|# includ|
|00004690| 65 20 3c 73 74 64 69 6f | 2e 68 3e 0a 58 23 20 69 |e <stdio|.h>.X# i|
|000046a0| 6e 63 6c 75 64 65 20 22 | 66 62 6d 2e 68 22 0a 58 |nclude "|fbm.h".X|
|000046b0| 0a 58 23 64 65 66 69 6e | 65 20 4d 41 58 43 4f 4c |.X#defin|e MAXCOL|
|000046c0| 4f 52 4d 41 50 53 49 5a | 45 20 20 20 20 20 20 20 |ORMAPSIZ|E |
|000046d0| 20 20 32 35 36 0a 58 0a | 58 23 64 65 66 69 6e 65 | 256.X.|X#define|
|000046e0| 20 54 52 55 45 20 20 20 | 20 31 0a 58 23 64 65 66 | TRUE | 1.X#def|
|000046f0| 69 6e 65 20 46 41 4c 53 | 45 20 20 20 30 0a 58 23 |ine FALS|E 0.X#|
|00004700| 64 65 66 69 6e 65 20 42 | 41 44 20 20 20 20 20 30 |define B|AD 0|
|00004710| 0a 58 23 64 65 66 69 6e | 65 20 4f 4b 20 20 20 20 |.X#defin|e OK |
|00004720| 20 20 31 0a 58 0a 58 23 | 64 65 66 69 6e 65 20 4d | 1.X.X#|define M|
|00004730| 41 58 5f 4c 57 5a 5f 42 | 49 54 53 20 20 20 20 20 |AX_LWZ_B|ITS |
|00004740| 20 20 20 20 20 20 20 31 | 32 0a 58 0a 58 23 64 65 | 1|2.X.X#de|
|00004750| 66 69 6e 65 20 52 65 61 | 64 4f 4b 28 66 69 6c 65 |fine Rea|dOK(file|
|00004760| 2c 62 75 66 66 65 72 2c | 6c 65 6e 29 20 28 66 72 |,buffer,|len) (fr|
|00004770| 65 61 64 28 62 75 66 66 | 65 72 2c 6c 65 6e 2c 31 |ead(buff|er,len,1|
|00004780| 2c 66 69 6c 65 29 21 3d | 30 29 0a 58 23 64 65 66 |,file)!=|0).X#def|
|00004790| 69 6e 65 20 45 61 73 79 | 46 61 69 6c 28 73 74 72 |ine Easy|Fail(str|
|000047a0| 2c 73 74 61 74 75 73 29 | 20 20 20 20 77 68 69 6c |,status)| whil|
|000047b0| 65 28 31 29 7b 66 70 72 | 69 6e 74 66 28 73 74 64 |e(1){fpr|intf(std|
|000047c0| 65 72 72 2c 73 74 72 29 | 3b 72 65 74 75 72 6e 28 |err,str)|;return(|
|000047d0| 73 74 61 74 75 73 29 3b | 7d 0a 58 23 64 65 66 69 |status);|}.X#defi|
|000047e0| 6e 65 20 48 61 72 64 46 | 61 69 6c 28 73 74 72 2c |ne HardF|ail(str,|
|000047f0| 73 74 61 74 75 73 29 20 | 20 20 20 77 68 69 6c 65 |status) | while|
|00004800| 28 31 29 7b 66 70 72 69 | 6e 74 66 28 73 74 64 65 |(1){fpri|ntf(stde|
|00004810| 72 72 2c 73 74 72 29 3b | 65 78 69 74 20 20 28 73 |rr,str);|exit (s|
|00004820| 74 61 74 75 73 29 3b 7d | 0a 58 0a 58 23 64 65 66 |tatus);}|.X.X#def|
|00004830| 69 6e 65 20 4c 4d 5f 74 | 6f 5f 75 69 6e 74 28 61 |ine LM_t|o_uint(a|
|00004840| 2c 62 29 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |,b) | |
|00004850| 20 20 20 20 28 28 28 62 | 29 3c 3c 38 29 7c 28 61 | (((b|)<<8)|(a|
|00004860| 29 29 0a 58 0a 58 23 69 | 66 6e 64 65 66 20 6c 69 |)).X.X#i|fndef li|
|00004870| 6e 74 0a 58 73 74 61 74 | 69 63 20 63 68 61 72 20 |nt.Xstat|ic char |
|00004880| 2a 66 62 6d 69 64 20 3d | 0a 58 09 22 24 46 42 4d |*fbmid =|.X."$FBM|
|00004890| 20 66 6c 67 69 66 72 2e | 63 20 3c 30 2e 39 31 3e | flgifr.|c <0.91>|
|000048a0| 20 32 36 2d 41 70 72 2d | 38 39 20 20 28 43 29 20 | 26-Apr-|89 (C) |
|000048b0| 31 39 38 39 20 62 79 20 | 4d 69 63 68 61 65 6c 20 |1989 by |Michael |
|000048c0| 4d 61 75 6c 64 69 6e 24 | 22 3b 0a 58 23 65 6e 64 |Mauldin$|";.X#end|
|000048d0| 69 66 0a 58 0a 58 72 65 | 61 64 5f 67 69 66 20 28 |if.X.Xre|ad_gif (|
|000048e0| 69 6d 61 67 65 2c 20 66 | 64 2c 20 6d 73 74 72 2c |image, f|d, mstr,|
|000048f0| 20 6d 6c 65 6e 29 0a 58 | 46 42 4d 20 2a 69 6d 61 | mlen).X|FBM *ima|
|00004900| 67 65 3b 0a 58 46 49 4c | 45 20 2a 66 64 3b 0a 58 |ge;.XFIL|E *fd;.X|
|00004910| 63 68 61 72 20 2a 6d 73 | 74 72 3b 0a 58 69 6e 74 |char *ms|tr;.Xint|
|00004920| 20 6d 6c 65 6e 3b 0a 58 | 7b 0a 58 20 20 75 6e 73 | mlen;.X|{.X uns|
|00004930| 69 67 6e 65 64 20 63 68 | 61 72 20 20 20 62 75 66 |igned ch|ar buf|
|00004940| 5b 31 36 5d 3b 0a 58 20 | 20 75 6e 73 69 67 6e 65 |[16];.X | unsigne|
|00004950| 64 20 63 68 61 72 20 20 | 20 63 3b 0a 58 20 20 69 |d char | c;.X i|
|00004960| 6e 74 20 20 20 20 20 20 | 20 20 20 20 20 20 20 75 |nt | u|
|00004970| 73 65 5f 67 6c 6f 62 61 | 6c 5f 63 6f 6c 6f 72 6d |se_globa|l_colorm|
|00004980| 61 70 3b 0a 58 20 20 69 | 6e 74 20 20 20 20 20 20 |ap;.X i|nt |
|00004990| 20 20 20 20 20 20 20 62 | 69 74 5f 70 69 78 65 6c | b|it_pixel|
|000049a0| 3b 0a 58 20 20 69 6e 74 | 20 20 20 20 20 20 20 20 |;.X int| |
|000049b0| 20 20 20 20 20 63 6f 75 | 6e 74 20 3d 20 30 3b 0a | cou|nt = 0;.|
|000049c0| 58 20 20 69 6e 74 20 20 | 20 20 20 20 20 20 20 20 |X int | |
|000049d0| 20 20 20 72 6f 77 73 2c | 20 63 6f 6c 73 2c 20 72 | rows,| cols, r|
|000049e0| 6f 77 6c 65 6e 2c 20 64 | 65 70 74 68 2c 20 63 6f |owlen, d|epth, co|
|000049f0| 6c 6f 72 73 3b 0a 58 0a | 58 20 20 2f 2a 20 52 65 |lors;.X.|X /* Re|
|00004a00| 61 64 20 6d 61 67 69 63 | 20 6e 75 6d 62 65 72 20 |ad magic| number |
|00004a10| 27 47 49 46 38 37 61 27 | 20 2a 2f 0a 58 20 20 62 |'GIF87a'| */.X b|
|00004a20| 75 66 5b 30 5d 20 3d 20 | 4e 45 58 54 4d 43 48 20 |uf[0] = |NEXTMCH |
|00004a30| 28 66 64 2c 20 6d 73 74 | 72 2c 20 6d 6c 65 6e 29 |(fd, mst|r, mlen)|
|00004a40| 20 26 20 30 78 66 66 3b | 0a 58 20 20 62 75 66 5b | & 0xff;|.X buf[|
|00004a50| 31 5d 20 3d 20 4e 45 58 | 54 4d 43 48 20 28 66 64 |1] = NEX|TMCH (fd|
|00004a60| 2c 20 6d 73 74 72 2c 20 | 6d 6c 65 6e 29 20 26 20 |, mstr, |mlen) & |
|00004a70| 30 78 66 66 3b 0a 58 20 | 20 62 75 66 5b 32 5d 20 |0xff;.X | buf[2] |
|00004a80| 3d 20 4e 45 58 54 4d 43 | 48 20 28 66 64 2c 20 6d |= NEXTMC|H (fd, m|
|00004a90| 73 74 72 2c 20 6d 6c 65 | 6e 29 20 26 20 30 78 66 |str, mle|n) & 0xf|
|00004aa0| 66 3b 0a 58 20 20 62 75 | 66 5b 33 5d 20 3d 20 4e |f;.X bu|f[3] = N|
|00004ab0| 45 58 54 4d 43 48 20 28 | 66 64 2c 20 6d 73 74 72 |EXTMCH (|fd, mstr|
|00004ac0| 2c 20 6d 6c 65 6e 29 20 | 26 20 30 78 66 66 3b 0a |, mlen) |& 0xff;.|
|00004ad0| 58 20 20 62 75 66 5b 34 | 5d 20 3d 20 4e 45 58 54 |X buf[4|] = NEXT|
|00004ae0| 4d 43 48 20 28 66 64 2c | 20 6d 73 74 72 2c 20 6d |MCH (fd,| mstr, m|
|00004af0| 6c 65 6e 29 20 26 20 30 | 78 66 66 3b 0a 58 20 20 |len) & 0|xff;.X |
|00004b00| 62 75 66 5b 35 5d 20 3d | 20 4e 45 58 54 4d 43 48 |buf[5] =| NEXTMCH|
|00004b10| 20 28 66 64 2c 20 6d 73 | 74 72 2c 20 6d 6c 65 6e | (fd, ms|tr, mlen|
|00004b20| 29 20 26 20 30 78 66 66 | 3b 0a 58 20 20 62 75 66 |) & 0xff|;.X buf|
|00004b30| 5b 36 5d 20 3d 20 30 3b | 0a 58 0a 58 20 20 69 66 |[6] = 0;|.X.X if|
|00004b40| 20 28 73 74 72 63 6d 70 | 20 28 62 75 66 2c 20 47 | (strcmp| (buf, G|
|00004b50| 49 46 5f 4d 41 47 49 43 | 29 20 21 3d 20 30 29 0a |IF_MAGIC|) != 0).|
|00004b60| 58 20 20 20 20 45 61 73 | 79 46 61 69 6c 28 22 62 |X Eas|yFail("b|
|00004b70| 61 64 20 6d 61 67 69 63 | 20 6e 75 6d 62 65 72 20 |ad magic| number |
|00004b80| 28 76 65 72 73 69 6f 6e | 20 6d 69 73 6d 61 74 63 |(version| mismatc|
|00004b90| 68 3f 29 5c 6e 22 2c 20 | 42 41 44 29 3b 0a 58 0a |h?)\n", |BAD);.X.|
|00004ba0| 58 20 20 69 66 20 28 21 | 52 65 61 64 4f 4b 20 28 |X if (!|ReadOK (|
|00004bb0| 66 64 2c 20 62 75 66 2c | 20 37 29 29 0a 58 20 20 |fd, buf,| 7)).X |
|00004bc0| 20 20 45 61 73 79 46 61 | 69 6c 28 22 65 72 72 6f | EasyFa|il("erro|
|00004bd0| 72 20 72 65 61 64 69 6e | 67 20 73 63 72 65 65 6e |r readin|g screen|
|00004be0| 20 64 65 73 63 72 69 70 | 74 6f 72 5c 6e 22 2c 20 | descrip|tor\n", |
|00004bf0| 42 41 44 29 3b 0a 58 0a | 58 20 20 2f 2a 20 52 65 |BAD);.X.|X /* Re|
|00004c00| 61 64 20 69 6d 61 67 65 | 20 64 61 74 61 20 2a 2f |ad image| data */|
|00004c10| 0a 58 20 20 69 6d 61 67 | 65 2d 3e 68 64 72 2e 63 |.X imag|e->hdr.c|
|00004c20| 6f 6c 73 20 3d 20 63 6f | 6c 73 20 3d 20 4c 4d 5f |ols = co|ls = LM_|
|00004c30| 74 6f 5f 75 69 6e 74 28 | 62 75 66 5b 30 5d 2c 20 |to_uint(|buf[0], |
|00004c40| 62 75 66 5b 31 5d 29 3b | 0a 58 20 20 69 6d 61 67 |buf[1]);|.X imag|
|00004c50| 65 2d 3e 68 64 72 2e 72 | 6f 77 73 20 3d 20 72 6f |e->hdr.r|ows = ro|
|00004c60| 77 73 20 3d 20 4c 4d 5f | 74 6f 5f 75 69 6e 74 28 |ws = LM_|to_uint(|
|00004c70| 62 75 66 5b 32 5d 2c 20 | 62 75 66 5b 33 5d 29 3b |buf[2], |buf[3]);|
|00004c80| 0a 58 20 20 69 6d 61 67 | 65 2d 3e 68 64 72 2e 70 |.X imag|e->hdr.p|
|00004c90| 6c 61 6e 65 73 20 3d 20 | 31 3b 0a 58 20 20 69 6d |lanes = |1;.X im|
|00004ca0| 61 67 65 2d 3e 68 64 72 | 2e 62 69 74 73 20 3d 20 |age->hdr|.bits = |
|00004cb0| 64 65 70 74 68 20 3d 20 | 28 62 75 66 5b 34 5d 20 |depth = |(buf[4] |
|00004cc0| 26 20 30 78 30 37 29 20 | 2b 20 31 3b 0a 58 20 20 |& 0x07) |+ 1;.X |
|00004cd0| 69 6d 61 67 65 2d 3e 68 | 64 72 2e 70 68 79 73 62 |image->h|dr.physb|
|00004ce0| 69 74 73 20 3d 20 38 3b | 0a 58 0a 58 20 20 2f 2a |its = 8;|.X.X /*|
|00004cf0| 20 50 61 64 20 74 6f 20 | 65 76 65 6e 20 62 79 74 | Pad to |even byt|
|00004d00| 65 20 2a 2f 0a 58 20 20 | 69 66 20 28 64 65 70 74 |e */.X |if (dept|
|00004d10| 68 20 3d 3d 20 31 29 0a | 58 20 20 7b 20 69 6d 61 |h == 1).|X { ima|
|00004d20| 67 65 2d 3e 68 64 72 2e | 72 6f 77 6c 65 6e 20 3d |ge->hdr.|rowlen =|
|00004d30| 20 72 6f 77 6c 65 6e 20 | 3d 20 31 36 20 2a 20 28 | rowlen |= 16 * (|
|00004d40| 28 63 6f 6c 73 20 2b 20 | 31 35 29 20 2f 20 31 36 |(cols + |15) / 16|
|00004d50| 29 3b 20 7d 0a 58 20 20 | 65 6c 73 65 0a 58 20 20 |); }.X |else.X |
|00004d60| 7b 20 69 6d 61 67 65 2d | 3e 68 64 72 2e 72 6f 77 |{ image-|>hdr.row|
|00004d70| 6c 65 6e 20 3d 20 72 6f | 77 6c 65 6e 20 3d 20 32 |len = ro|wlen = 2|
|00004d80| 20 2a 20 28 28 63 6f 6c | 73 20 2b 20 31 29 20 2f | * ((col|s + 1) /|
|00004d90| 20 32 29 3b 20 7d 0a 58 | 0a 58 20 20 69 6d 61 67 | 2); }.X|.X imag|
|00004da0| 65 2d 3e 68 64 72 2e 70 | 6c 6e 6c 65 6e 20 3d 20 |e->hdr.p|lnlen = |
|00004db0| 72 6f 77 6c 65 6e 20 2a | 20 72 6f 77 73 3b 0a 58 |rowlen *| rows;.X|
|00004dc0| 20 20 63 6f 6c 6f 72 73 | 20 3d 20 31 20 3c 3c 20 | colors| = 1 << |
|00004dd0| 64 65 70 74 68 3b 0a 58 | 20 20 69 6d 61 67 65 2d |depth;.X| image-|
|00004de0| 3e 68 64 72 2e 63 6c 72 | 6c 65 6e 20 3d 20 33 20 |>hdr.clr|len = 3 |
|00004df0| 2a 20 63 6f 6c 6f 72 73 | 3b 0a 58 20 20 69 6d 61 |* colors|;.X ima|
|00004e00| 67 65 2d 3e 68 64 72 2e | 74 69 74 6c 65 5b 30 5d |ge->hdr.|title[0]|
|00004e10| 20 3d 20 27 5c 30 27 3b | 0a 58 20 20 69 6d 61 67 | = '\0';|.X imag|
|00004e20| 65 2d 3e 68 64 72 2e 63 | 72 65 64 69 74 73 5b 30 |e->hdr.c|redits[0|
|00004e30| 5d 20 3d 20 27 5c 30 27 | 3b 0a 58 20 20 0a 58 20 |] = '\0'|;.X .X |
|00004e40| 20 2f 2a 20 54 72 79 20 | 74 6f 20 67 75 65 73 73 | /* Try |to guess|
|00004e50| 20 61 73 70 65 63 74 20 | 72 61 74 69 6f 20 2a 2f | aspect |ratio */|
|00004e60| 0a 58 20 20 69 66 20 28 | 63 6f 6c 73 20 3d 3d 20 |.X if (|cols == |
|00004e70| 33 32 30 20 26 26 20 72 | 6f 77 73 20 3d 3d 20 32 |320 && r|ows == 2|
|00004e80| 30 30 29 09 7b 20 69 6d | 61 67 65 2d 3e 68 64 72 |00).{ im|age->hdr|
|00004e90| 2e 61 73 70 65 63 74 20 | 3d 20 31 2e 32 3b 20 7d |.aspect |= 1.2; }|
|00004ea0| 0a 58 20 20 65 6c 73 65 | 20 69 66 20 28 63 6f 6c |.X else| if (col|
|00004eb0| 73 20 3d 3d 20 33 32 30 | 20 26 26 20 72 6f 77 73 |s == 320| && rows|
|00004ec0| 20 3d 3d 20 31 37 35 29 | 09 7b 20 69 6d 61 67 65 | == 175)|.{ image|
|00004ed0| 2d 3e 68 64 72 2e 61 73 | 70 65 63 74 20 3d 20 31 |->hdr.as|pect = 1|
|00004ee0| 2e 32 3b 20 7d 0a 58 20 | 20 65 6c 73 65 20 69 66 |.2; }.X | else if|
|00004ef0| 20 28 63 6f 6c 73 20 3d | 3d 20 33 32 30 20 26 26 | (cols =|= 320 &&|
|00004f00| 20 72 6f 77 73 20 3d 3d | 20 34 30 30 29 09 7b 20 | rows ==| 400).{ |
|00004f10| 69 6d 61 67 65 2d 3e 68 | 64 72 2e 61 73 70 65 63 |image->h|dr.aspec|
|00004f20| 74 20 3d 20 30 2e 36 3b | 20 7d 0a 58 20 20 65 6c |t = 0.6;| }.X el|
|00004f30| 73 65 20 69 66 20 28 63 | 6f 6c 73 20 3d 3d 20 33 |se if (c|ols == 3|
|00004f40| 32 30 20 26 26 20 72 6f | 77 73 20 3d 3d 20 33 35 |20 && ro|ws == 35|
|00004f50| 30 29 09 7b 20 69 6d 61 | 67 65 2d 3e 68 64 72 2e |0).{ ima|ge->hdr.|
|00004f60| 61 73 70 65 63 74 20 3d | 20 30 2e 36 3b 20 7d 0a |aspect =| 0.6; }.|
|00004f70| 58 20 20 65 6c 73 65 20 | 69 66 20 28 63 6f 6c 73 |X else |if (cols|
|00004f80| 20 3d 3d 20 36 34 30 20 | 26 26 20 72 6f 77 73 20 | == 640 |&& rows |
|00004f90| 3d 3d 20 32 30 30 29 09 | 7b 20 69 6d 61 67 65 2d |== 200).|{ image-|
|00004fa0| 3e 68 64 72 2e 61 73 70 | 65 63 74 20 3d 20 32 2e |>hdr.asp|ect = 2.|
|00004fb0| 34 3b 20 7d 0a 58 20 20 | 65 6c 73 65 20 69 66 20 |4; }.X |else if |
|00004fc0| 28 63 6f 6c 73 20 3d 3d | 20 36 34 30 20 26 26 20 |(cols ==| 640 && |
|00004fd0| 72 6f 77 73 20 3d 3d 20 | 31 37 35 29 09 7b 20 69 |rows == |175).{ i|
|00004fe0| 6d 61 67 65 2d 3e 68 64 | 72 2e 61 73 70 65 63 74 |mage->hd|r.aspect|
|00004ff0| 20 3d 20 32 2e 34 3b 20 | 7d 0a 58 20 20 65 6c 73 | = 2.4; |}.X els|
|00005000| 65 20 69 66 20 28 63 6f | 6c 73 20 3d 3d 20 36 34 |e if (co|ls == 64|
|00005010| 30 20 26 26 20 72 6f 77 | 73 20 3d 3d 20 34 30 30 |0 && row|s == 400|
|00005020| 29 09 7b 20 69 6d 61 67 | 65 2d 3e 68 64 72 2e 61 |).{ imag|e->hdr.a|
|00005030| 73 70 65 63 74 20 3d 20 | 31 2e 32 3b 20 7d 0a 58 |spect = |1.2; }.X|
|00005040| 20 20 65 6c 73 65 20 69 | 66 20 28 63 6f 6c 73 20 | else i|f (cols |
|00005050| 3d 3d 20 36 34 30 20 26 | 26 20 72 6f 77 73 20 3d |== 640 &|& rows =|
|00005060| 3d 20 33 35 30 29 09 7b | 20 69 6d 61 67 65 2d 3e |= 350).{| image->|
|00005070| 68 64 72 2e 61 73 70 65 | 63 74 20 3d 20 31 2e 32 |hdr.aspe|ct = 1.2|
|00005080| 3b 20 7d 0a 58 20 20 65 | 6c 73 65 09 09 09 09 09 |; }.X e|lse.....|
|00005090| 7b 20 69 6d 61 67 65 2d | 3e 68 64 72 2e 61 73 70 |{ image-|>hdr.asp|
|000050a0| 65 63 74 20 3d 20 31 2e | 30 3b 20 7d 0a 58 20 20 |ect = 1.|0; }.X |
|000050b0| 0a 58 23 20 69 66 64 65 | 66 20 44 45 42 55 47 0a |.X# ifde|f DEBUG.|
|000050c0| 58 20 20 66 70 72 69 6e | 74 66 20 28 73 74 64 65 |X fprin|tf (stde|
|000050d0| 72 72 2c 20 22 5c 6e 49 | 6d 61 67 65 20 66 69 6c |rr, "\nI|mage fil|
|000050e0| 65 20 68 65 61 64 65 72 | 3a 5c 6e 5c 6e 22 29 3b |e header|:\n\n");|
|000050f0| 0a 58 20 20 66 70 72 69 | 6e 74 66 20 28 73 74 64 |.X fpri|ntf (std|
|00005100| 65 72 72 2c 20 22 63 6f | 6c 73 20 20 20 20 20 20 |err, "co|ls |
|00005110| 20 25 64 5c 6e 22 2c 20 | 69 6d 61 67 65 2d 3e 68 | %d\n", |image->h|
|00005120| 64 72 2e 63 6f 6c 73 29 | 3b 0a 58 20 20 66 70 72 |dr.cols)|;.X fpr|
|00005130| 69 6e 74 66 20 28 73 74 | 64 65 72 72 2c 20 22 72 |intf (st|derr, "r|
|00005140| 6f 77 73 20 20 20 20 20 | 20 20 25 64 5c 6e 22 2c |ows | %d\n",|
|00005150| 20 69 6d 61 67 65 2d 3e | 68 64 72 2e 72 6f 77 73 | image->|hdr.rows|
|00005160| 29 3b 0a 58 20 20 66 70 | 72 69 6e 74 66 20 28 73 |);.X fp|rintf (s|
|00005170| 74 64 65 72 72 2c 20 22 | 70 6c 61 6e 65 73 20 20 |tderr, "|planes |
|00005180| 20 20 20 25 64 5c 6e 22 | 2c 20 69 6d 61 67 65 2d | %d\n"|, image-|
|00005190| 3e 68 64 72 2e 70 6c 61 | 6e 65 73 29 3b 0a 58 20 |>hdr.pla|nes);.X |
|000051a0| 20 66 70 72 69 6e 74 66 | 20 28 73 74 64 65 72 72 | fprintf| (stderr|
|000051b0| 2c 20 22 62 69 74 73 20 | 20 20 20 20 20 20 25 64 |, "bits | %d|
|000051c0| 5c 6e 22 2c 20 69 6d 61 | 67 65 2d 3e 68 64 72 2e |\n", ima|ge->hdr.|
|000051d0| 62 69 74 73 29 3b 0a 58 | 20 20 66 70 72 69 6e 74 |bits);.X| fprint|
|000051e0| 66 20 28 73 74 64 65 72 | 72 2c 20 22 70 68 79 73 |f (stder|r, "phys|
|000051f0| 62 69 74 73 20 20 20 25 | 64 5c 6e 22 2c 20 69 6d |bits %|d\n", im|
|00005200| 61 67 65 2d 3e 68 64 72 | 2e 70 68 79 73 62 69 74 |age->hdr|.physbit|
|00005210| 73 29 3b 0a 58 20 20 66 | 70 72 69 6e 74 66 20 28 |s);.X f|printf (|
|00005220| 73 74 64 65 72 72 2c 20 | 22 72 6f 77 6c 65 6e 20 |stderr, |"rowlen |
|00005230| 20 20 20 20 25 64 5c 6e | 22 2c 20 69 6d 61 67 65 | %d\n|", image|
|00005240| 2d 3e 68 64 72 2e 72 6f | 77 6c 65 6e 29 3b 0a 58 |->hdr.ro|wlen);.X|
|00005250| 20 20 66 70 72 69 6e 74 | 66 20 28 73 74 64 65 72 | fprint|f (stder|
|00005260| 72 2c 20 22 70 6c 6e 6c | 65 6e 20 20 20 20 20 25 |r, "plnl|en %|
|00005270| 64 5c 6e 22 2c 20 69 6d | 61 67 65 2d 3e 68 64 72 |d\n", im|age->hdr|
|00005280| 2e 70 6c 6e 6c 65 6e 29 | 3b 0a 58 20 20 66 70 72 |.plnlen)|;.X fpr|
|00005290| 69 6e 74 66 20 28 73 74 | 64 65 72 72 2c 20 22 63 |intf (st|derr, "c|
|000052a0| 6c 72 6c 65 6e 20 20 20 | 20 20 25 64 5c 6e 22 2c |lrlen | %d\n",|
|000052b0| 20 69 6d 61 67 65 2d 3e | 68 64 72 2e 63 6c 72 6c | image->|hdr.clrl|
|000052c0| 65 6e 29 3b 0a 58 20 20 | 66 70 72 69 6e 74 66 20 |en);.X |fprintf |
|000052d0| 28 73 74 64 65 72 72 2c | 20 22 61 73 70 65 63 74 |(stderr,| "aspect|
|000052e0| 20 20 20 20 20 25 31 2e | 33 6c 66 5c 6e 22 2c 20 | %1.|3lf\n", |
|000052f0| 69 6d 61 67 65 2d 3e 68 | 64 72 2e 61 73 70 65 63 |image->h|dr.aspec|
|00005300| 74 29 3b 0a 58 20 20 66 | 70 72 69 6e 74 66 20 28 |t);.X f|printf (|
|00005310| 73 74 64 65 72 72 2c 20 | 22 74 69 74 6c 65 20 20 |stderr, |"title |
|00005320| 20 20 20 20 27 25 73 27 | 5c 6e 22 2c 20 69 6d 61 | '%s'|\n", ima|
|00005330| 67 65 2d 3e 68 64 72 2e | 74 69 74 6c 65 29 3b 0a |ge->hdr.|title);.|
|00005340| 58 20 20 66 70 72 69 6e | 74 66 20 28 73 74 64 65 |X fprin|tf (stde|
|00005350| 72 72 2c 20 22 63 72 65 | 64 69 74 73 20 20 20 20 |rr, "cre|dits |
|00005360| 27 25 73 27 5c 6e 22 2c | 20 69 6d 61 67 65 2d 3e |'%s'\n",| image->|
|00005370| 68 64 72 2e 63 72 65 64 | 69 74 73 29 3b 0a 58 23 |hdr.cred|its);.X#|
|00005380| 20 65 6e 64 69 66 0a 58 | 20 20 0a 58 20 20 2f 2a | endif.X| .X /*|
|00005390| 20 41 6c 6c 6f 63 61 74 | 65 20 69 6d 61 67 65 20 | Allocat|e image |
|000053a0| 2a 2f 0a 58 20 20 61 6c | 6c 6f 63 5f 66 62 6d 20 |*/.X al|loc_fbm |
|000053b0| 28 69 6d 61 67 65 29 3b | 0a 58 0a 58 20 20 2f 2a |(image);|.X.X /*|
|000053c0| 20 52 65 61 64 20 63 6f | 6c 6f 72 6d 61 70 20 69 | Read co|lormap i|
|000053d0| 66 20 67 69 76 65 6e 20 | 2a 2f 0a 58 20 20 69 66 |f given |*/.X if|
|000053e0| 20 28 28 62 75 66 5b 34 | 5d 20 26 20 30 78 38 30 | ((buf[4|] & 0x80|
|000053f0| 29 20 3d 3d 20 30 78 38 | 30 29 0a 58 20 20 7b 20 |) == 0x8|0).X { |
|00005400| 69 66 20 28 52 65 61 64 | 43 6f 6c 6f 72 4d 61 70 |if (Read|ColorMap|
|00005410| 20 28 66 64 2c 20 63 6f | 6c 6f 72 73 2c 20 69 6d | (fd, co|lors, im|
|00005420| 61 67 65 2d 3e 63 6d 29 | 20 3d 3d 20 42 41 44 29 |age->cm)| == BAD)|
|00005430| 0a 58 20 20 20 20 20 20 | 72 65 74 75 72 6e 20 28 |.X |return (|
|00005440| 42 41 44 29 3b 0a 58 20 | 20 7d 0a 58 0a 58 20 20 |BAD);.X | }.X.X |
|00005450| 77 68 69 6c 65 20 28 31 | 29 0a 58 20 20 7b 20 69 |while (1|).X { i|
|00005460| 66 20 28 21 52 65 61 64 | 4f 4b 20 28 66 64 2c 20 |f (!Read|OK (fd, |
|00005470| 26 63 2c 20 31 29 29 0a | 58 20 20 20 20 20 20 45 |&c, 1)).|X E|
|00005480| 61 73 79 46 61 69 6c 28 | 22 4e 6f 20 69 6d 61 67 |asyFail(|"No imag|
|00005490| 65 20 64 61 74 61 20 2d | 2d 20 45 4f 46 5c 6e 22 |e data -|- EOF\n"|
|000054a0| 2c 20 42 41 44 29 3b 0a | 58 0a 58 20 20 20 20 69 |, BAD);.|X.X i|
|000054b0| 66 20 28 63 20 3d 3d 20 | 27 3b 27 29 0a 58 20 20 |f (c == |';').X |
|000054c0| 20 20 20 20 72 65 74 75 | 72 6e 20 4f 4b 3b 0a 58 | retu|rn OK;.X|
|000054d0| 0a 58 20 20 20 20 69 66 | 20 28 63 20 3d 3d 20 27 |.X if| (c == '|
|000054e0| 21 27 29 0a 58 20 20 20 | 20 7b 20 69 66 20 28 21 |!').X | { if (!|
|000054f0| 52 65 61 64 4f 4b 20 28 | 66 64 2c 20 26 63 2c 20 |ReadOK (|fd, &c, |
|00005500| 31 29 29 0a 58 20 20 20 | 20 20 20 20 20 45 61 73 |1)).X | Eas|
|00005510| 79 46 61 69 6c 28 22 4e | 6f 20 65 78 74 65 6e 74 |yFail("N|o extent|
|00005520| 69 6f 6e 20 66 75 6e 63 | 74 69 6f 6e 20 63 6f 64 |ion func|tion cod|
|00005530| 65 20 2d 2d 20 45 4f 46 | 5c 6e 22 2c 20 42 41 44 |e -- EOF|\n", BAD|
|00005540| 29 3b 0a 58 20 20 20 20 | 20 20 69 66 20 28 49 67 |);.X | if (Ig|
|00005550| 6e 6f 72 65 45 78 74 65 | 6e 74 69 6f 6e 28 66 64 |noreExte|ntion(fd|
|00005560| 29 20 3d 3d 20 42 41 44 | 29 0a 58 20 20 20 20 20 |) == BAD|).X |
|00005570| 20 20 20 72 65 74 75 72 | 6e 20 28 42 41 44 29 3b | retur|n (BAD);|
|00005580| 0a 58 20 20 20 20 7d 0a | 58 0a 58 20 20 20 20 69 |.X }.|X.X i|
|00005590| 66 20 28 63 20 21 3d 20 | 27 2c 27 29 0a 58 20 20 |f (c != |',').X |
|000055a0| 20 20 7b 20 66 70 72 69 | 6e 74 66 28 73 74 64 65 | { fpri|ntf(stde|
|000055b0| 72 72 2c 20 22 42 6f 67 | 75 73 20 63 68 61 72 61 |rr, "Bog|us chara|
|000055c0| 63 74 65 72 20 69 67 6e | 6f 72 69 6e 67 20 27 25 |cter ign|oring '%|
|000055d0| 63 27 5c 6e 22 2c 20 63 | 29 3b 0a 58 20 20 20 20 |c'\n", c|);.X |
|000055e0| 20 20 63 6f 6e 74 69 6e | 75 65 3b 0a 58 20 20 20 | contin|ue;.X |
|000055f0| 20 7d 0a 58 0a 58 20 20 | 20 20 69 66 20 28 63 6f | }.X.X | if (co|
|00005600| 75 6e 74 20 3d 3d 20 31 | 29 0a 58 20 20 20 20 20 |unt == 1|).X |
|00005610| 20 48 61 72 64 46 61 69 | 6c 28 22 54 68 69 73 20 | HardFai|l("This |
|00005620| 66 69 6c 65 20 63 6f 6e | 74 61 69 6e 73 20 6d 6f |file con|tains mo|
|00005630| 72 65 20 74 68 61 6e 20 | 6f 6e 65 20 69 6d 61 67 |re than |one imag|
|00005640| 65 21 20 46 41 49 4c 49 | 4e 47 5c 6e 22 2c 20 31 |e! FAILI|NG\n", 1|
|00005650| 29 3b 0a 58 20 20 20 20 | 63 6f 75 6e 74 2b 2b 3b |);.X |count++;|
|00005660| 0a 58 0a 58 20 20 20 20 | 69 66 20 28 21 52 65 61 |.X.X |if (!Rea|
|00005670| 64 4f 4b 20 28 66 64 2c | 20 62 75 66 2c 20 39 29 |dOK (fd,| buf, 9)|
|00005680| 29 0a 58 20 20 20 20 20 | 20 45 61 73 79 46 61 69 |).X | EasyFai|
|00005690| 6c 28 22 43 6f 75 6c 64 | 6e 27 74 20 72 65 61 64 |l("Could|n't read|
|000056a0| 20 6c 65 66 74 2f 74 6f | 70 2f 77 69 64 74 68 2f | left/to|p/width/|
|000056b0| 68 65 69 67 68 74 5c 6e | 22 2c 20 54 52 55 45 29 |height\n|", TRUE)|
|000056c0| 3b 0a 58 0a 58 23 20 69 | 66 64 65 66 20 44 45 42 |;.X.X# i|fdef DEB|
|000056d0| 55 47 0a 58 20 20 20 20 | 66 70 72 69 6e 74 66 20 |UG.X |fprintf |
|000056e0| 28 73 74 64 65 72 72 2c | 20 22 49 6d 61 67 65 20 |(stderr,| "Image |
|000056f0| 64 65 73 63 72 69 70 74 | 69 6f 6e 3a 20 22 29 3b |descript|ion: ");|
|00005700| 0a 58 20 20 20 20 66 6f | 72 20 28 69 3d 30 3b 20 |.X fo|r (i=0; |
|00005710| 69 3c 39 3b 20 69 2b 2b | 29 20 66 70 72 69 6e 74 |i<9; i++|) fprint|
|00005720| 66 20 28 73 74 64 65 72 | 72 2c 20 22 25 30 32 78 |f (stder|r, "%02x|
|00005730| 22 2c 20 62 75 66 5b 69 | 5d 29 3b 0a 58 20 20 20 |", buf[i|]);.X |
|00005740| 20 66 70 72 69 6e 74 66 | 20 28 73 74 64 65 72 72 | fprintf| (stderr|
|00005750| 2c 20 22 5c 6e 22 29 3b | 0a 58 23 20 65 6e 64 69 |, "\n");|.X# endi|
|00005760| 66 0a 58 0a 58 20 20 20 | 20 69 66 20 28 28 62 75 |f.X.X | if ((bu|
|00005770| 66 5b 38 5d 20 26 20 30 | 78 38 30 29 20 3d 3d 20 |f[8] & 0|x80) == |
|00005780| 30 78 38 30 29 0a 58 20 | 20 20 20 20 20 75 73 65 |0x80).X | use|
|00005790| 5f 67 6c 6f 62 61 6c 5f | 63 6f 6c 6f 72 6d 61 70 |_global_|colormap|
|000057a0| 20 3d 20 46 41 4c 53 45 | 3b 0a 58 20 20 20 20 65 | = FALSE|;.X e|
|000057b0| 6c 73 65 0a 58 20 20 20 | 20 20 20 75 73 65 5f 67 |lse.X | use_g|
|000057c0| 6c 6f 62 61 6c 5f 63 6f | 6c 6f 72 6d 61 70 20 3d |lobal_co|lormap =|
|000057d0| 20 54 52 55 45 3b 0a 58 | 0a 58 20 20 20 20 62 69 | TRUE;.X|.X bi|
|000057e0| 74 5f 70 69 78 65 6c 20 | 3d 20 32 20 3c 3c 20 28 |t_pixel |= 2 << (|
|000057f0| 62 75 66 5b 38 5d 20 26 | 20 30 78 30 37 29 3b 0a |buf[8] &| 0x07);.|
|00005800| 58 20 20 20 20 0a 58 20 | 20 20 20 69 66 20 28 21 |X .X | if (!|
|00005810| 75 73 65 5f 67 6c 6f 62 | 61 6c 5f 63 6f 6c 6f 72 |use_glob|al_color|
|00005820| 6d 61 70 20 26 26 20 62 | 69 74 5f 70 69 78 65 6c |map && b|it_pixel|
|00005830| 20 3e 20 63 6f 6c 6f 72 | 73 29 0a 58 20 20 20 20 | > color|s).X |
|00005840| 7b 20 48 61 72 64 46 61 | 69 6c 20 28 22 4c 6f 63 |{ HardFa|il ("Loc|
|00005850| 61 6c 20 63 6f 6c 6f 72 | 6d 61 70 20 68 61 73 20 |al color|map has |
|00005860| 6d 6f 72 65 20 63 6f 6c | 6f 72 73 20 74 68 61 6e |more col|ors than|
|00005870| 20 67 6c 6f 62 61 6c 21 | 5c 6e 22 2c 20 42 41 44 | global!|\n", BAD|
|00005880| 29 3b 20 7d 0a 58 0a 58 | 20 20 20 20 69 66 20 28 |); }.X.X| if (|
|00005890| 21 75 73 65 5f 67 6c 6f | 62 61 6c 5f 63 6f 6c 6f |!use_glo|bal_colo|
|000058a0| 72 6d 61 70 29 0a 58 20 | 20 20 20 7b 20 66 70 72 |rmap).X | { fpr|
|000058b0| 69 6e 74 66 20 28 73 74 | 64 65 72 72 2c 0a 58 20 |intf (st|derr,.X |
|000058c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 22 4f | | "O|
|000058d0| 76 65 72 72 69 64 69 6e | 67 20 67 6c 6f 62 61 6c |verridin|g global|
|000058e0| 20 63 6f 6c 6f 72 6d 61 | 70 20 28 25 64 29 20 77 | colorma|p (%d) w|
|000058f0| 69 74 68 20 6c 6f 63 61 | 6c 20 28 25 64 29 5c 6e |ith loca|l (%d)\n|
|00005900| 22 2c 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |",.X | |
|00005910| 20 20 20 63 6f 6c 6f 72 | 73 2c 20 62 69 74 5f 70 | color|s, bit_p|
|00005920| 69 78 65 6c 29 3b 0a 58 | 0a 58 20 20 20 20 20 20 |ixel);.X|.X |
|00005930| 63 6f 6c 6f 72 73 20 3d | 20 62 69 74 5f 70 69 78 |colors =| bit_pix|
|00005940| 65 6c 3b 0a 58 20 20 20 | 20 20 20 69 6d 61 67 65 |el;.X | image|
|00005950| 2d 3e 68 64 72 2e 63 6c | 72 6c 65 6e 20 3d 20 33 |->hdr.cl|rlen = 3|
|00005960| 20 2a 20 63 6f 6c 6f 72 | 73 3b 0a 58 20 20 20 20 | * color|s;.X |
|00005970| 20 20 0a 58 20 20 20 20 | 20 20 69 66 20 28 52 65 | .X | if (Re|
|00005980| 61 64 43 6f 6c 6f 72 4d | 61 70 28 66 64 2c 20 63 |adColorM|ap(fd, c|
|00005990| 6f 6c 6f 72 73 2c 20 69 | 6d 61 67 65 2d 3e 63 6d |olors, i|mage->cm|
|000059a0| 29 20 3d 3d 20 42 41 44 | 29 0a 58 20 20 20 20 20 |) == BAD|).X |
|000059b0| 20 20 20 72 65 74 75 72 | 6e 20 42 41 44 3b 0a 58 | retur|n BAD;.X|
|000059c0| 20 20 20 20 7d 0a 58 0a | 58 20 20 20 20 66 70 72 | }.X.|X fpr|
|000059d0| 69 6e 74 66 20 28 73 74 | 64 65 72 72 2c 20 22 52 |intf (st|derr, "R|
|000059e0| 65 61 64 69 6e 67 20 47 | 49 46 20 69 6d 61 67 65 |eading G|IF image|
|000059f0| 20 5b 25 64 78 25 64 5d | 2c 20 25 64 20 62 69 74 | [%dx%d]|, %d bit|
|00005a00| 73 22 2c 0a 58 09 20 20 | 20 20 20 69 6d 61 67 65 |s",.X. | image|
|00005a10| 2d 3e 68 64 72 2e 63 6f | 6c 73 2c 20 69 6d 61 67 |->hdr.co|ls, imag|
|00005a20| 65 2d 3e 68 64 72 2e 72 | 6f 77 73 2c 20 69 6d 61 |e->hdr.r|ows, ima|
|00005a30| 67 65 2d 3e 68 64 72 2e | 62 69 74 73 29 3b 0a 58 |ge->hdr.|bits);.X|
|00005a40| 20 20 20 20 69 66 20 28 | 69 6d 61 67 65 2d 3e 68 | if (|image->h|
|00005a50| 64 72 2e 63 6c 72 6c 65 | 6e 20 3e 20 30 29 0a 58 |dr.clrle|n > 0).X|
|00005a60| 20 20 20 20 7b 20 66 70 | 72 69 6e 74 66 20 28 73 | { fp|rintf (s|
|00005a70| 74 64 65 72 72 2c 20 22 | 2c 20 25 64 20 63 6f 6c |tderr, "|, %d col|
|00005a80| 6f 72 73 22 2c 20 69 6d | 61 67 65 2d 3e 68 64 72 |ors", im|age->hdr|
|00005a90| 2e 63 6c 72 6c 65 6e 20 | 2f 20 33 29 3b 20 7d 0a |.clrlen |/ 3); }.|
|00005aa0| 58 20 20 20 20 65 6c 73 | 65 20 69 66 20 28 69 6d |X els|e if (im|
|00005ab0| 61 67 65 2d 3e 68 64 72 | 2e 62 69 74 73 20 3e 20 |age->hdr|.bits > |
|00005ac0| 31 29 0a 58 20 20 20 20 | 7b 20 66 70 72 69 6e 74 |1).X |{ fprint|
|00005ad0| 66 20 28 73 74 64 65 72 | 72 2c 20 22 2c 20 67 72 |f (stder|r, ", gr|
|00005ae0| 61 79 73 63 61 6c 65 22 | 29 3b 20 7d 0a 58 0a 58 |ayscale"|); }.X.X|
|00005af0| 20 20 20 20 69 66 20 28 | 28 62 75 66 5b 38 5d 20 | if (|(buf[8] |
|00005b00| 26 20 30 78 34 30 29 20 | 3d 3d 20 30 78 34 30 29 |& 0x40) |== 0x40)|
|00005b10| 0a 58 20 20 20 20 7b 20 | 66 70 72 69 6e 74 66 20 |.X { |fprintf |
|00005b20| 28 73 74 64 65 72 72 2c | 20 22 2c 20 69 6e 74 65 |(stderr,| ", inte|
|00005b30| 72 6c 61 63 65 64 22 29 | 3b 20 7d 0a 58 20 20 20 |rlaced")|; }.X |
|00005b40| 20 66 70 72 69 6e 74 66 | 20 28 73 74 64 65 72 72 | fprintf| (stderr|
|00005b50| 2c 20 22 5c 6e 22 29 3b | 0a 58 0a 58 0a 58 20 20 |, "\n");|.X.X.X |
|00005b60| 20 20 69 66 20 28 28 62 | 75 66 5b 38 5d 20 26 20 | if ((b|uf[8] & |
|00005b70| 30 78 34 30 29 20 3d 3d | 20 30 78 34 30 29 0a 58 |0x40) ==| 0x40).X|
|00005b80| 20 20 20 20 7b 20 0a 58 | 20 20 20 20 20 20 69 66 | { .X| if|
|00005b90| 20 28 52 65 61 64 49 6e | 74 65 72 6c 61 63 65 64 | (ReadIn|terlaced|
|00005ba0| 28 66 64 2c 0a 58 09 09 | 09 20 4c 4d 5f 74 6f 5f |(fd,.X..|. LM_to_|
|00005bb0| 75 69 6e 74 28 62 75 66 | 5b 34 5d 2c 62 75 66 5b |uint(buf|[4],buf[|
|00005bc0| 35 5d 29 2c 0a 58 09 09 | 09 20 4c 4d 5f 74 6f 5f |5]),.X..|. LM_to_|
|00005bd0| 75 69 6e 74 28 62 75 66 | 5b 36 5d 2c 62 75 66 5b |uint(buf|[6],buf[|
|00005be0| 37 5d 29 2c 0a 58 09 09 | 09 20 69 6d 61 67 65 2d |7]),.X..|. image-|
|00005bf0| 3e 62 6d 2c 0a 58 09 09 | 09 20 72 6f 77 6c 65 6e |>bm,.X..|. rowlen|
|00005c00| 29 20 3d 3d 20 42 41 44 | 29 0a 58 09 72 65 74 75 |) == BAD|).X.retu|
|00005c10| 72 6e 20 42 41 44 3b 0a | 58 20 20 20 20 7d 0a 58 |rn BAD;.|X }.X|
|00005c20| 20 20 20 20 65 6c 73 65 | 0a 58 20 20 20 20 7b 20 | else|.X { |
|00005c30| 69 66 20 28 52 65 61 64 | 52 61 73 74 65 72 28 66 |if (Read|Raster(f|
|00005c40| 64 2c 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |d,.X | |
|00005c50| 20 20 20 20 20 20 20 20 | 20 4c 4d 5f 74 6f 5f 75 | | LM_to_u|
|00005c60| 69 6e 74 28 62 75 66 5b | 34 5d 2c 20 62 75 66 5b |int(buf[|4], buf[|
|00005c70| 35 5d 29 2c 0a 58 20 20 | 20 20 20 20 20 20 20 20 |5]),.X | |
|00005c80| 20 20 20 20 20 20 20 20 | 20 20 20 4c 4d 5f 74 6f | | LM_to|
|00005c90| 5f 75 69 6e 74 28 62 75 | 66 5b 36 5d 2c 20 62 75 |_uint(bu|f[6], bu|
|00005ca0| 66 5b 37 5d 29 2c 0a 58 | 20 20 20 20 20 20 20 20 |f[7]),.X| |
|00005cb0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 69 6d 61 | | ima|
|00005cc0| 67 65 2d 3e 62 6d 2c 0a | 58 20 20 20 20 20 20 20 |ge->bm,.|X |
|00005cd0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 72 6f | | ro|
|00005ce0| 77 6c 65 6e 29 20 3d 3d | 20 42 41 44 29 0a 58 20 |wlen) ==| BAD).X |
|00005cf0| 20 20 20 20 20 20 20 72 | 65 74 75 72 6e 20 42 41 | r|eturn BA|
|00005d00| 44 3b 0a 58 20 20 20 20 | 20 20 65 6c 73 65 0a 58 |D;.X | else.X|
|00005d10| 20 20 20 20 20 20 20 20 | 72 65 74 75 72 6e 20 4f | |return O|
|00005d20| 4b 3b 0a 58 20 20 20 20 | 7d 0a 58 20 20 7d 0a 58 |K;.X |}.X }.X|
|00005d30| 7d 0a 58 0a 58 52 65 61 | 64 43 6f 6c 6f 72 4d 61 |}.X.XRea|dColorMa|
|00005d40| 70 20 28 66 64 2c 20 6e | 75 6d 62 65 72 2c 20 62 |p (fd, n|umber, b|
|00005d50| 75 66 66 65 72 29 0a 58 | 20 20 46 49 4c 45 20 20 |uffer).X| FILE |
|00005d60| 20 20 20 20 20 20 20 20 | 20 2a 66 64 3b 0a 58 20 | | *fd;.X |
|00005d70| 20 69 6e 74 20 20 20 20 | 20 20 20 20 20 20 20 20 | int | |
|00005d80| 20 6e 75 6d 62 65 72 3b | 0a 58 20 20 75 6e 73 69 | number;|.X unsi|
|00005d90| 67 6e 65 64 20 63 68 61 | 72 20 20 20 2a 62 75 66 |gned cha|r *buf|
|00005da0| 66 65 72 3b 0a 58 7b 0a | 58 20 20 69 6e 74 20 20 |fer;.X{.|X int |
|00005db0| 20 20 20 20 20 20 20 20 | 20 20 20 69 3b 0a 58 20 | | i;.X |
|00005dc0| 20 75 6e 73 69 67 6e 65 | 64 20 63 68 61 72 20 20 | unsigne|d char |
|00005dd0| 20 72 67 62 5b 33 5d 2c | 20 2a 72 65 64 2c 20 2a | rgb[3],| *red, *|
|00005de0| 67 72 6e 2c 20 2a 62 6c | 75 3b 0a 58 0a 58 20 20 |grn, *bl|u;.X.X |
|00005df0| 72 65 64 20 3d 20 62 75 | 66 66 65 72 3b 0a 58 20 |red = bu|ffer;.X |
|00005e00| 20 67 72 6e 20 3d 20 62 | 75 66 66 65 72 20 2b 20 | grn = b|uffer + |
|00005e10| 6e 75 6d 62 65 72 3b 0a | 58 20 20 62 6c 75 20 3d |number;.|X blu =|
|00005e20| 20 67 72 6e 20 2b 20 6e | 75 6d 62 65 72 3b 0a 58 | grn + n|umber;.X|
|00005e30| 0a 58 20 20 66 6f 72 20 | 28 69 20 3d 20 30 3b 20 |.X for |(i = 0; |
|00005e40| 69 20 3c 20 6e 75 6d 62 | 65 72 3b 20 69 2b 2b 29 |i < numb|er; i++)|
|00005e50| 0a 58 20 20 7b 20 69 66 | 20 28 21 52 65 61 64 4f |.X { if| (!ReadO|
|00005e60| 4b 20 28 66 64 2c 20 72 | 67 62 2c 20 73 69 7a 65 |K (fd, r|gb, size|
|00005e70| 6f 66 28 72 67 62 29 29 | 29 0a 58 20 20 20 20 20 |of(rgb))|).X |
|00005e80| 20 45 61 73 79 46 61 69 | 6c 28 22 42 6f 67 75 73 | EasyFai|l("Bogus|
|00005e90| 20 63 6f 6c 6f 72 6d 61 | 70 5c 6e 22 2c 20 42 41 | colorma|p\n", BA|
|00005ea0| 44 29 3b 0a 58 0a 58 20 | 20 20 20 72 65 64 5b 69 |D);.X.X | red[i|
|00005eb0| 5d 20 3d 20 72 67 62 5b | 30 5d 3b 0a 58 20 20 20 |] = rgb[|0];.X |
|00005ec0| 20 67 72 6e 5b 69 5d 20 | 3d 20 72 67 62 5b 31 5d | grn[i] |= rgb[1]|
|00005ed0| 3b 0a 58 20 20 20 20 62 | 6c 75 5b 69 5d 20 3d 20 |;.X b|lu[i] = |
|00005ee0| 72 67 62 5b 32 5d 3b 0a | 58 20 20 7d 0a 58 0a 58 |rgb[2];.|X }.X.X|
|00005ef0| 20 20 72 65 74 75 72 6e | 20 4f 4b 3b 0a 58 7d 0a | return| OK;.X}.|
|00005f00| 58 0a 58 49 67 6e 6f 72 | 65 45 78 74 65 6e 74 69 |X.XIgnor|eExtenti|
|00005f10| 6f 6e 28 66 64 29 0a 58 | 20 20 46 49 4c 45 20 20 |on(fd).X| FILE |
|00005f20| 20 20 20 20 20 20 20 20 | 20 2a 66 64 3b 0a 58 7b | | *fd;.X{|
|00005f30| 0a 58 20 20 73 74 61 74 | 69 63 20 63 68 61 72 20 |.X stat|ic char |
|00005f40| 20 20 20 20 62 75 66 5b | 32 35 36 5d 3b 0a 58 20 | buf[|256];.X |
|00005f50| 20 75 6e 73 69 67 6e 65 | 64 20 63 68 61 72 20 20 | unsigne|d char |
|00005f60| 20 63 3b 0a 58 0a 58 20 | 20 77 68 69 6c 65 20 28 | c;.X.X | while (|
|00005f70| 31 29 0a 58 20 20 7b 0a | 58 20 20 20 20 69 66 20 |1).X {.|X if |
|00005f80| 28 21 52 65 61 64 4f 4b | 20 28 66 64 2c 20 26 63 |(!ReadOK| (fd, &c|
|00005f90| 2c 20 31 29 29 0a 58 20 | 20 20 20 20 20 45 61 73 |, 1)).X | Eas|
|00005fa0| 79 46 61 69 6c 28 22 45 | 4f 46 20 69 6e 20 65 78 |yFail("E|OF in ex|
|00005fb0| 74 65 6e 74 69 6f 6e 5c | 6e 22 2c 20 42 41 44 29 |tention\|n", BAD)|
|00005fc0| 3b 0a 58 0a 58 20 20 20 | 20 69 66 20 28 63 20 3d |;.X.X | if (c =|
|00005fd0| 3d 20 30 29 0a 58 20 20 | 20 20 20 20 72 65 74 75 |= 0).X | retu|
|00005fe0| 72 6e 20 4f 4b 3b 0a 58 | 0a 58 20 20 20 20 69 66 |rn OK;.X|.X if|
|00005ff0| 20 28 72 65 61 64 28 66 | 64 2c 20 62 75 66 2c 20 | (read(f|d, buf, |
|00006000| 28 69 6e 74 29 20 63 29 | 20 21 3d 20 28 69 6e 74 |(int) c)| != (int|
|00006010| 29 20 63 29 0a 58 20 20 | 20 20 20 20 45 61 73 79 |) c).X | Easy|
|00006020| 46 61 69 6c 28 22 45 4f | 46 20 69 6e 20 65 78 74 |Fail("EO|F in ext|
|00006030| 65 6e 74 69 6f 6e 5c 6e | 22 2c 20 42 41 44 29 3b |ention\n|", BAD);|
|00006040| 0a 58 20 20 7d 0a 58 7d | 0a 58 0a 58 47 65 74 43 |.X }.X}|.X.XGetC|
|00006050| 6f 64 65 28 66 64 2c 20 | 63 6f 64 65 5f 73 69 7a |ode(fd, |code_siz|
|00006060| 65 2c 20 66 6c 61 67 29 | 0a 58 20 20 46 49 4c 45 |e, flag)|.X FILE|
|00006070| 20 20 20 20 20 20 20 20 | 20 20 20 2a 66 64 3b 0a | | *fd;.|
|00006080| 58 20 20 69 6e 74 20 20 | 20 20 20 20 20 20 20 20 |X int | |
|00006090| 20 20 20 63 6f 64 65 5f | 73 69 7a 65 3b 0a 58 20 | code_|size;.X |
|000060a0| 20 69 6e 74 20 20 20 20 | 20 20 20 20 20 20 20 20 | int | |
|000060b0| 20 66 6c 61 67 3b 0a 58 | 7b 0a 58 20 20 73 74 61 | flag;.X|{.X sta|
|000060c0| 74 69 63 20 75 6e 73 69 | 67 6e 65 64 20 63 68 61 |tic unsi|gned cha|
|000060d0| 72 20 62 75 66 5b 32 38 | 30 5d 3b 0a 58 20 20 73 |r buf[28|0];.X s|
|000060e0| 74 61 74 69 63 20 69 6e | 74 20 20 20 20 20 20 63 |tatic in|t c|
|000060f0| 75 72 62 69 74 2c 20 6c | 61 73 74 62 69 74 2c 20 |urbit, l|astbit, |
|00006100| 64 6f 6e 65 2c 20 6c 61 | 73 74 5f 62 79 74 65 3b |done, la|st_byte;|
|00006110| 0a 58 20 20 69 6e 74 20 | 20 20 20 20 20 20 20 20 |.X int | |
|00006120| 20 20 20 20 69 2c 20 6a | 2c 20 72 65 74 3b 0a 58 | i, j|, ret;.X|
|00006130| 20 20 75 6e 73 69 67 6e | 65 64 20 63 68 61 72 20 | unsign|ed char |
|00006140| 20 20 63 6f 75 6e 74 3b | 0a 58 0a 58 20 20 69 66 | count;|.X.X if|
|00006150| 20 28 66 6c 61 67 29 0a | 58 20 20 7b 0a 58 20 20 | (flag).|X {.X |
|00006160| 20 20 63 75 72 62 69 74 | 20 3d 20 30 3b 0a 58 20 | curbit| = 0;.X |
|00006170| 20 20 20 6c 61 73 74 62 | 69 74 20 3d 20 30 3b 0a | lastb|it = 0;.|
|00006180| 58 20 20 20 20 64 6f 6e | 65 20 3d 20 46 41 4c 53 |X don|e = FALS|
|00006190| 45 3b 0a 58 20 20 20 20 | 72 65 74 75 72 6e 20 30 |E;.X |return 0|
|000061a0| 3b 0a 58 20 20 7d 0a 58 | 0a 58 20 20 69 66 20 28 |;.X }.X|.X if (|
|000061b0| 28 63 75 72 62 69 74 20 | 2b 20 63 6f 64 65 5f 73 |(curbit |+ code_s|
|000061c0| 69 7a 65 29 20 3e 3d 20 | 6c 61 73 74 62 69 74 29 |ize) >= |lastbit)|
|000061d0| 0a 58 20 20 7b 20 69 66 | 20 28 64 6f 6e 65 29 0a |.X { if| (done).|
|000061e0| 58 20 20 20 20 7b 20 69 | 66 20 28 63 75 72 62 69 |X { i|f (curbi|
|000061f0| 74 20 3e 3d 20 6c 61 73 | 74 62 69 74 29 0a 58 20 |t >= las|tbit).X |
|00006200| 20 20 20 20 20 20 20 45 | 61 73 79 46 61 69 6c 28 | E|asyFail(|
|00006210| 22 52 61 6e 20 6f 66 66 | 20 74 68 65 20 65 6e 64 |"Ran off| the end|
|00006220| 20 6f 66 20 6d 79 20 62 | 69 74 73 5c 6e 22 2c 20 | of my b|its\n", |
|00006230| 2d 31 29 3b 0a 58 20 20 | 20 20 7d 0a 58 20 20 20 |-1);.X | }.X |
|00006240| 20 62 75 66 5b 30 5d 20 | 3d 20 62 75 66 5b 6c 61 | buf[0] |= buf[la|
|00006250| 73 74 5f 62 79 74 65 20 | 2d 20 32 5d 3b 0a 58 20 |st_byte |- 2];.X |
|00006260| 20 20 20 62 75 66 5b 31 | 5d 20 3d 20 62 75 66 5b | buf[1|] = buf[|
|00006270| 6c 61 73 74 5f 62 79 74 | 65 20 2d 20 31 5d 3b 0a |last_byt|e - 1];.|
|00006280| 58 0a 58 20 20 20 20 69 | 66 20 28 21 52 65 61 64 |X.X i|f (!Read|
|00006290| 4f 4b 20 28 66 64 2c 20 | 26 63 6f 75 6e 74 2c 20 |OK (fd, |&count, |
|000062a0| 31 29 29 0a 58 20 20 20 | 20 7b 20 45 61 73 79 46 |1)).X | { EasyF|
|000062b0| 61 69 6c 28 22 45 72 72 | 6f 72 20 69 6e 20 67 65 |ail("Err|or in ge|
|000062c0| 74 74 69 6e 67 20 62 75 | 66 66 65 72 20 73 69 7a |tting bu|ffer siz|
|000062d0| 65 5c 6e 22 2c 20 2d 31 | 29 3b 20 7d 0a 58 0a 58 |e\n", -1|); }.X.X|
|000062e0| 20 20 20 20 69 66 20 28 | 63 6f 75 6e 74 20 3d 3d | if (|count ==|
|000062f0| 20 30 29 0a 58 20 20 20 | 20 7b 20 64 6f 6e 65 20 | 0).X | { done |
|00006300| 3d 20 54 52 55 45 3b 20 | 7d 20 0a 58 0a 58 20 20 |= TRUE; |} .X.X |
|00006310| 20 20 65 6c 73 65 20 69 | 66 20 28 21 52 65 61 64 | else i|f (!Read|
|00006320| 4f 4b 20 28 66 64 2c 20 | 26 62 75 66 5b 32 5d 2c |OK (fd, |&buf[2],|
|00006330| 20 63 6f 75 6e 74 29 29 | 0a 58 20 20 20 20 20 20 | count))|.X |
|00006340| 45 61 73 79 46 61 69 6c | 28 22 45 72 72 6f 72 20 |EasyFail|("Error |
|00006350| 69 6e 20 67 65 74 74 69 | 6e 67 20 62 75 66 66 65 |in getti|ng buffe|
|00006360| 72 5c 6e 22 2c 20 2d 31 | 29 3b 0a 58 0a 58 20 20 |r\n", -1|);.X.X |
|00006370| 20 20 6c 61 73 74 5f 62 | 79 74 65 20 3d 20 32 20 | last_b|yte = 2 |
|00006380| 2b 20 63 6f 75 6e 74 3b | 0a 58 20 20 20 20 63 75 |+ count;|.X cu|
|00006390| 72 62 69 74 20 3d 20 28 | 63 75 72 62 69 74 20 2d |rbit = (|curbit -|
|000063a0| 20 6c 61 73 74 62 69 74 | 29 20 2b 20 31 36 3b 0a | lastbit|) + 16;.|
|000063b0| 58 20 20 20 20 6c 61 73 | 74 62 69 74 20 3d 20 28 |X las|tbit = (|
|000063c0| 32 20 2b 20 63 6f 75 6e | 74 29 20 2a 20 38 3b 0a |2 + coun|t) * 8;.|
|000063d0| 58 20 20 7d 0a 58 0a 58 | 20 20 72 65 74 20 3d 20 |X }.X.X| ret = |
|000063e0| 30 3b 0a 58 0a 58 20 20 | 66 6f 72 20 28 69 20 3d |0;.X.X |for (i =|
|000063f0| 20 63 75 72 62 69 74 2c | 20 6a 20 3d 20 30 3b 20 | curbit,| j = 0; |
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.