home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1996-03-26 | 20.6 KB | [TEXT/CWIE] |
open in:
MacOS 8.1
|
Win98
|
DOS
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
You can browse this item here: GDTestClut.c
Confidence | Program | Detection | Match Type | Support
|
---|
66%
| dexvert
| Compact Compressed (Unix) (archive/compact)
| ext
| Supported |
10%
| dexvert
| MacBinary (archive/macBinary)
| fallback
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| MacBinary II, inited, Tue Mar 26 22:06:27 1996, modified Tue Mar 26 22:06:27 1996, creator 'CWIE', type ASCII, 19157 bytes "GDTestClut.c" , at 0x4b55 1738 bytes resource
| default (weak)
| |
99%
| file
| data
| default
| |
74%
| TrID
| Macintosh plain text (MacBinary)
| default
| |
25%
| TrID
| MacBinary 2
| default (weak)
| |
100%
| siegfried
| fmt/1762 MacBinary (II)
| default
| |
100%
| lsar
| MacBinary
| default
|
|
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [CWIE] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 0c 47 44 54 65 73 74 | 43 6c 75 74 2e 63 00 00 |..GDTest|Clut.c..|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 43 57 49 | 45 01 00 00 00 00 00 00 |.TEXTCWI|E.......|
|00000050| 00 00 00 00 00 4a d5 00 | 00 06 ca ad 7e 61 33 ad |.....J..|....~a3.|
|00000060| 7e 61 33 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |~a3.....|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 95 d3 00 00 |........|........|
|00000080| 2f 2a 0d 47 44 54 65 73 | 74 43 6c 75 74 2e 63 0d |/*.GDTes|tClut.c.|
|00000090| 0d 54 68 69 73 20 69 73 | 20 75 73 65 64 20 62 79 |.This is| used by|
|000000a0| 20 54 69 6d 65 56 69 64 | 65 6f 3b 20 49 20 63 61 | TimeVid|eo; I ca|
|000000b0| 6e d5 74 20 74 68 69 6e | 6b 20 6f 66 20 61 6e 79 |n.t thin|k of any|
|000000c0| 20 72 65 61 73 6f 6e 20 | 66 6f 72 20 69 6e 63 6c | reason |for incl|
|000000d0| 75 64 69 6e 67 20 69 74 | 20 69 6e 20 61 6e 79 0d |uding it| in any.|
|000000e0| 6f 74 68 65 72 20 70 72 | 6f 67 72 61 6d 2e 0d 0d |other pr|ogram...|
|000000f0| 4f 53 45 72 72 20 47 44 | 54 65 73 74 43 6c 75 74 |OSErr GD|TestClut|
|00000100| 28 46 49 4c 45 20 2a 6f | 5b 32 5d 2c 47 44 48 61 |(FILE *o|[2],GDHa|
|00000110| 6e 64 6c 65 20 64 65 76 | 69 63 65 2c 73 68 6f 72 |ndle dev|ice,shor|
|00000120| 74 20 66 6c 61 67 73 2c | 56 69 64 65 6f 49 6e 66 |t flags,|VideoInf|
|00000130| 6f 20 2a 63 61 72 64 29 | 3b 0d 0d 47 44 54 65 73 |o *card)|;..GDTes|
|00000140| 74 43 6c 75 74 2e 63 20 | 74 65 73 74 73 20 77 68 |tClut.c |tests wh|
|00000150| 65 74 68 65 72 20 74 68 | 65 20 76 69 64 65 6f 20 |ether th|e video |
|00000160| 63 6c 75 74 20 63 61 6e | 20 62 65 20 77 72 69 74 |clut can| be writ|
|00000170| 74 65 6e 20 61 6e 64 20 | 72 65 61 64 20 66 61 69 |ten and |read fai|
|00000180| 74 68 66 75 6c 6c 79 2c | 0d 61 6e 64 20 73 61 76 |thfully,|.and sav|
|00000190| 65 73 20 74 68 65 20 72 | 65 73 75 6c 74 73 20 69 |es the r|esults i|
|000001a0| 6e 20 61 20 75 73 65 72 | 2d 73 75 70 70 6c 69 65 |n a user|-supplie|
|000001b0| 64 20 56 69 64 65 6f 49 | 6e 66 6f 20 73 74 72 75 |d VideoI|nfo stru|
|000001c0| 63 74 75 72 65 2e 20 54 | 68 65 20 74 65 73 74 20 |cture. T|he test |
|000001d0| 63 6f 6e 73 69 73 74 73 | 0d 6f 66 20 77 72 69 74 |consists|.of writ|
|000001e0| 69 6e 67 20 72 61 6e 64 | 6f 6d 20 6e 75 6d 62 65 |ing rand|om numbe|
|000001f0| 72 73 20 74 6f 20 61 6c | 6c 20 74 68 65 20 63 6c |rs to al|l the cl|
|00000200| 75 74 20 65 6e 74 72 69 | 65 73 2c 20 72 65 61 64 |ut entri|es, read|
|00000210| 69 6e 67 20 74 68 65 6d | 20 62 61 63 6b 2c 20 61 |ing them| back, a|
|00000220| 6e 64 0d 63 6f 6d 70 61 | 72 69 6e 67 2e 20 49 d5 |nd.compa|ring. I.|
|00000230| 76 65 20 62 65 65 6e 20 | 73 75 72 70 72 69 73 65 |ve been |surprise|
|00000240| 64 20 74 6f 20 66 69 6e | 64 20 6d 6f 72 65 20 74 |d to fin|d more t|
|00000250| 68 61 6e 20 61 20 66 65 | 77 20 76 69 64 65 6f 20 |han a fe|w video |
|00000260| 64 72 69 76 65 72 73 20 | 74 68 61 74 20 66 61 69 |drivers |that fai|
|00000270| 6c 0d 74 68 69 73 20 74 | 65 73 74 2c 20 66 6f 72 |l.this t|est, for|
|00000280| 20 76 61 72 69 6f 75 73 | 20 72 65 61 73 6f 6e 73 | various| reasons|
|00000290| 2e 0d 0d 54 68 65 20 62 | 69 74 73 20 6f 66 20 d2 |...The b|its of .|
|000002a0| 66 6c 61 67 73 d3 20 61 | 72 65 20 74 65 73 74 65 |flags. a|re teste|
|000002b0| 64 20 69 6e 64 65 70 65 | 6e 64 65 6e 74 6c 79 2e |d indepe|ndently.|
|000002c0| 20 49 66 20 66 6c 61 67 | 73 26 74 65 73 74 43 6c | If flag|s&testCl|
|000002d0| 75 74 51 75 69 63 6b 6c | 79 46 6c 61 67 20 74 68 |utQuickl|yFlag th|
|000002e0| 65 6e 0d 53 65 74 45 6e | 74 72 69 65 73 51 75 69 |en.SetEn|triesQui|
|000002f0| 63 6b 6c 79 28 29 20 77 | 69 6c 6c 20 62 65 20 74 |ckly() w|ill be t|
|00000300| 65 73 74 65 64 20 69 6e | 73 74 65 61 64 20 6f 66 |ested in|stead of|
|00000310| 20 47 44 53 65 74 45 6e | 74 72 69 65 73 2f 47 44 | GDSetEn|tries/GD|
|00000320| 44 69 72 65 63 74 53 65 | 74 45 6e 74 72 69 65 73 |DirectSe|tEntries|
|00000330| 2e 0d 49 66 20 66 6c 61 | 67 73 26 74 65 73 74 43 |..If fla|gs&testC|
|00000340| 6c 75 74 53 65 72 69 61 | 6c 6c 79 46 6c 61 67 20 |lutSeria|llyFlag |
|00000350| 74 68 65 6e 20 74 68 65 | 20 63 6c 75 74 20 65 6e |then the| clut en|
|00000360| 74 72 69 65 73 20 77 69 | 6c 6c 20 62 65 20 73 65 |tries wi|ll be se|
|00000370| 74 20 69 6e 64 69 76 69 | 64 75 61 6c 6c 79 2c 0d |t indivi|dually,.|
|00000380| 63 61 6c 6c 69 6e 67 20 | 47 44 53 65 74 45 6e 74 |calling |GDSetEnt|
|00000390| 72 69 65 73 20 6f 6e 63 | 65 20 66 6f 72 20 65 61 |ries onc|e for ea|
|000003a0| 63 68 20 63 6c 75 74 20 | 65 6e 74 72 79 2c 20 74 |ch clut |entry, t|
|000003b0| 6f 20 63 68 65 63 6b 20 | 74 68 65 20 63 6c 75 74 |o check |the clut|
|000003c0| 20 65 6e 74 72 79 0d 61 | 64 64 72 65 73 73 69 6e | entry.a|ddressin|
|000003d0| 67 2e 20 49 66 20 66 6c | 61 67 73 26 74 65 73 74 |g. If fl|ags&test|
|000003e0| 43 6c 75 74 4c 69 6e 65 | 61 72 46 6c 61 67 20 74 |ClutLine|arFlag t|
|000003f0| 68 65 6e 20 61 20 73 69 | 6d 70 6c 65 20 73 65 71 |hen a si|mple seq|
|00000400| 75 65 6e 63 65 2c 20 77 | 69 6c 6c 20 62 65 20 6c |uence, w|ill be l|
|00000410| 6f 61 64 65 64 0d 69 6e | 74 6f 20 74 68 65 20 63 |oaded.in|to the c|
|00000420| 6c 75 74 2c 20 69 6e 73 | 74 65 61 64 20 6f 66 20 |lut, ins|tead of |
|00000430| 72 61 6e 64 6f 6d 20 6e | 75 6d 62 65 72 73 2c 20 |random n|umbers, |
|00000440| 74 6f 20 68 65 6c 70 20 | 66 69 67 75 72 69 6e 67 |to help |figuring|
|00000450| 20 6f 75 74 20 73 79 73 | 74 65 6d 61 74 69 63 0d | out sys|tematic.|
|00000460| 65 72 72 6f 72 73 2e 20 | 54 68 65 20 73 65 71 75 |errors. |The sequ|
|00000470| 65 6e 63 65 20 69 73 20 | 28 30 2c 30 2c 30 29 2c |ence is |(0,0,0),|
|00000480| 28 31 2c 30 2c 30 29 2c | 20 28 30 2c 32 2c 30 29 |(1,0,0),| (0,2,0)|
|00000490| 2c 28 30 2c 30 2c 33 29 | 2c 28 34 2c 34 2c 34 29 |,(0,0,3)|,(4,4,4)|
|000004a0| 2c 28 34 2c 30 2c 30 29 | 2c 20 61 6e 64 20 73 6f |,(4,0,0)|, and so|
|000004b0| 0d 6f 6e 2e 0d 0d 52 65 | 74 75 72 6e 65 64 20 76 |.on...Re|turned v|
|000004c0| 61 6c 75 65 20 69 73 20 | 7a 65 72 6f 20 69 66 20 |alue is |zero if |
|000004d0| 6f 6b 2c 20 6e 6f 6e 7a | 65 72 6f 20 69 66 20 65 |ok, nonz|ero if e|
|000004e0| 72 72 6f 72 20 6f 63 63 | 75 72 72 65 64 2e 0d 0d |rror occ|urred...|
|000004f0| 47 44 54 65 73 74 43 6c | 75 74 20 72 65 63 6f 67 |GDTestCl|ut recog|
|00000500| 6e 69 7a 65 73 20 74 68 | 65 20 63 6f 6d 6d 6f 6e |nizes th|e common|
|00000510| 20 64 72 69 76 65 72 20 | 65 72 72 6f 72 73 20 61 | driver |errors a|
|00000520| 6e 64 20 72 65 70 6f 72 | 74 73 20 74 68 65 6d 20 |nd repor|ts them |
|00000530| 69 6e 20 61 20 73 65 6e | 73 69 62 6c 65 0d 77 61 |in a sen|sible.wa|
|00000540| 79 2c 20 75 73 69 6e 67 | 20 74 68 65 20 76 61 72 |y, using| the var|
|00000550| 69 6f 75 73 20 66 69 65 | 6c 64 73 20 6f 66 20 74 |ious fie|lds of t|
|00000560| 68 65 20 63 61 72 64 2d | 3e 64 65 70 74 68 5b 64 |he card-|>depth[d|
|00000570| 5d 2e 63 6c 75 74 20 73 | 74 72 75 63 74 75 72 65 |].clut s|tructure|
|00000580| 2e 20 45 72 72 6f 72 73 | 0d 61 63 63 75 6d 75 6c |. Errors|.accumul|
|00000590| 61 74 65 20 69 6e 20 74 | 68 65 20 63 61 72 64 2d |ate in t|he card-|
|000005a0| 3e 64 65 70 74 68 5b 64 | 5d 2e 63 6c 75 74 20 73 |>depth[d|].clut s|
|000005b0| 74 72 75 63 74 75 72 65 | 2c 20 61 6c 6c 6f 77 69 |tructure|, allowi|
|000005c0| 6e 67 20 79 6f 75 20 74 | 6f 20 6d 61 6b 65 20 6d |ng you t|o make m|
|000005d0| 75 6c 74 69 70 6c 65 0d | 63 61 6c 6c 73 20 74 6f |ultiple.|calls to|
|000005e0| 20 47 44 54 65 73 74 43 | 6c 75 74 20 61 6e 64 20 | GDTestC|lut and |
|000005f0| 6f 6e 6c 79 20 74 68 65 | 6e 20 73 75 6d 6d 61 72 |only the|n summar|
|00000600| 69 7a 65 20 74 68 65 20 | 72 65 73 75 6c 74 73 2e |ize the |results.|
|00000610| 20 49 74 20 69 73 20 69 | 6d 70 6f 72 74 61 6e 74 | It is i|mportant|
|00000620| 20 74 68 61 74 0d 79 6f | 75 20 7a 65 72 6f 20 63 | that.yo|u zero c|
|00000630| 61 72 64 2d 3e 64 65 70 | 74 68 5b 64 5d 2e 63 6c |ard->dep|th[d].cl|
|00000640| 75 74 2e 74 65 73 74 73 | 20 61 6e 64 20 63 61 72 |ut.tests| and car|
|00000650| 64 2d 3e 64 65 70 74 68 | 5b 64 5d 2e 63 6c 75 74 |d->depth|[d].clut|
|00000660| 51 75 69 63 6b 6c 79 2e | 74 65 73 74 73 20 62 65 |Quickly.|tests be|
|00000670| 66 6f 72 65 0d 79 6f 75 | 72 20 66 69 72 73 74 20 |fore.you|r first |
|00000680| 63 61 6c 6c 20 74 6f 20 | 47 44 54 65 73 74 43 6c |call to |GDTestCl|
|00000690| 75 74 2c 20 74 6f 20 69 | 6e 64 75 63 65 20 69 74 |ut, to i|nduce it|
|000006a0| 20 74 6f 20 7a 65 72 6f | 20 74 68 65 20 72 65 73 | to zero| the res|
|000006b0| 74 20 6f 66 20 74 68 65 | 20 63 6c 75 74 0d 73 74 |t of the| clut.st|
|000006c0| 72 75 63 74 75 72 65 73 | 2e 0d 0d 41 73 73 75 6d |ructures|...Assum|
|000006d0| 65 73 20 74 68 61 74 20 | 47 44 65 76 69 63 65 20 |es that |GDevice |
|000006e0| 72 65 63 6f 72 64 20 69 | 73 20 76 61 6c 69 64 2c |record i|s valid,|
|000006f0| 20 69 2e 65 2e 20 74 68 | 65 20 75 73 65 72 20 68 | i.e. th|e user h|
|00000700| 61 73 20 6e 6f 74 20 63 | 61 6c 6c 65 64 20 47 44 |as not c|alled GD|
|00000710| 53 65 74 4d 6f 64 65 28 | 29 2e 0d 0d 48 49 53 54 |SetMode(|)...HIST|
|00000720| 4f 52 59 3a 0d 33 2f 39 | 2f 39 33 09 64 67 70 09 |ORY:.3/9|/93.dgp.|
|00000730| 63 6f 64 65 20 65 78 74 | 72 61 63 74 65 64 20 66 |code ext|racted f|
|00000740| 72 6f 6d 20 74 68 65 20 | 64 65 6d 6f 20 54 65 73 |rom the |demo Tes|
|00000750| 74 43 6c 75 74 73 2e 63 | 2c 20 74 6f 20 63 72 65 |tCluts.c|, to cre|
|00000760| 61 74 65 20 61 20 72 65 | 75 73 61 62 6c 65 0d 09 |ate a re|usable..|
|00000770| 09 73 75 62 72 6f 75 74 | 69 6e 65 2e 0d 33 2f 31 |.subrout|ine..3/1|
|00000780| 30 2f 39 33 09 64 67 70 | 09 4e 6f 20 6c 6f 6e 67 |0/93.dgp|.No long|
|00000790| 65 72 20 61 73 73 75 6d | 65 20 74 68 61 74 20 47 |er assum|e that G|
|000007a0| 44 65 76 69 63 65 20 72 | 65 63 6f 72 64 20 72 65 |Device r|ecord re|
|000007b0| 66 6c 65 63 74 73 20 74 | 68 65 20 61 63 74 75 61 |flects t|he actua|
|000007c0| 6c 20 73 74 61 74 65 20 | 6f 66 20 74 68 65 0d 09 |l state |of the..|
|000007d0| 09 64 72 69 76 65 72 2e | 0d 34 2f 35 2f 39 33 09 |.driver.|.4/5/93.|
|000007e0| 64 67 70 09 41 64 64 20 | 73 75 70 70 6f 72 74 20 |dgp.Add |support |
|000007f0| 66 6f 72 20 67 72 61 79 | 42 2e 0d 34 2f 31 39 2f |for gray|B..4/19/|
|00000800| 39 33 09 64 67 70 09 46 | 69 78 65 64 20 62 75 67 |93.dgp.F|ixed bug|
|00000810| 20 69 6e 20 56 69 73 69 | 62 6c 65 48 61 73 68 20 | in Visi|bleHash |
|00000820| 74 68 61 74 20 75 73 65 | 64 20 67 61 72 62 61 67 |that use|d garbag|
|00000830| 65 20 69 6e 20 70 6c 61 | 63 65 20 6f 66 0d 09 09 |e in pla|ce of...|
|00000840| 09 6c 69 6e 65 61 72 20 | 63 6f 6c 6f 72 20 74 61 |.linear |color ta|
|00000850| 62 6c 65 20 77 68 65 6e | 20 67 64 54 79 70 65 3d |ble when| gdType=|
|00000860| 3d 64 69 72 65 63 74 54 | 79 70 65 2e 20 55 73 65 |=directT|ype. Use|
|00000870| 20 47 44 4e 65 77 4c 69 | 6e 65 61 72 43 6f 6c 6f | GDNewLi|nearColo|
|00000880| 72 54 61 62 6c 65 2e 0d | 35 2f 31 31 2f 39 33 09 |rTable..|5/11/93.|
|00000890| 64 67 70 09 47 44 54 65 | 73 74 43 6c 75 74 48 61 |dgp.GDTe|stClutHa|
|000008a0| 73 68 20 6e 6f 77 20 63 | 68 65 63 6b 73 20 66 6f |sh now c|hecks fo|
|000008b0| 72 20 76 61 6c 69 64 20 | 64 65 76 69 63 65 2c 20 |r valid |device, |
|000008c0| 69 6e 20 72 65 73 70 6f | 6e 73 65 20 74 6f 20 62 |in respo|nse to b|
|000008d0| 75 67 20 72 65 70 6f 72 | 74 0d 09 09 09 62 79 20 |ug repor|t....by |
|000008e0| 4a 6f 6e 61 74 68 61 6e | 20 42 72 65 63 68 65 72 |Jonathan| Brecher|
|000008f0| 2e 0d 35 2f 31 38 2f 39 | 33 09 64 67 70 09 41 6c |..5/18/9|3.dgp.Al|
|00000900| 6c 6f 77 20 73 6d 61 6c | 6c 2c 20 30 2e 30 30 31 |low smal|l, 0.001|
|00000910| 2c 20 74 6f 6c 65 72 61 | 6e 63 65 20 69 6e 20 65 |, tolera|nce in e|
|00000920| 73 74 61 62 6c 69 73 68 | 69 6e 67 20 74 68 65 20 |stablish|ing the |
|00000930| 69 64 65 6e 74 69 74 79 | 20 74 72 61 6e 73 66 6f |identity| transfo|
|00000940| 72 6d 2e 0d 35 2f 32 35 | 2f 39 33 09 64 67 70 09 |rm..5/25|/93.dgp.|
|00000950| 49 6e 63 72 65 61 73 65 | 64 20 70 72 6f 70 6f 72 |Increase|d propor|
|00000960| 74 69 6f 6e 20 6f 66 20 | 74 69 6d 65 20 73 70 65 |tion of |time spe|
|00000970| 6e 74 20 6c 6f 61 64 69 | 6e 67 20 63 6c 75 74 20 |nt loadi|ng clut |
|00000980| 69 6e 20 56 69 73 69 62 | 6c 65 48 61 73 68 28 29 |in Visib|leHash()|
|00000990| 2e 0d 39 2f 35 2f 39 34 | 20 64 67 70 20 72 65 6d |..9/5/94| dgp rem|
|000009a0| 6f 76 65 64 20 61 73 73 | 75 6d 70 74 69 6f 6e 20 |oved ass|umption |
|000009b0| 69 6e 20 70 72 69 6e 74 | 66 27 73 20 74 68 61 74 |in print|f's that|
|000009c0| 20 69 6e 74 3d 3d 73 68 | 6f 72 74 2e 0d 31 32 2f | int==sh|ort..12/|
|000009d0| 32 39 2f 39 34 20 64 67 | 70 20 57 72 69 74 65 41 |29/94 dg|p WriteA|
|000009e0| 6e 64 52 65 61 64 43 6c | 75 74 20 6e 6f 77 20 77 |ndReadCl|ut now w|
|000009f0| 61 69 74 73 20 66 6f 72 | 20 76 62 6c 20 62 65 66 |aits for| vbl bef|
|00000a00| 6f 72 65 20 72 65 61 64 | 69 6e 67 2e 0d 34 2f 38 |ore read|ing..4/8|
|00000a10| 2f 39 35 20 64 67 70 20 | 49 20 69 6e 74 72 6f 64 |/95 dgp |I introd|
|00000a20| 75 63 65 64 20 57 41 49 | 54 5f 46 4f 52 5f 56 42 |uced WAI|T_FOR_VB|
|00000a30| 4c 20 74 6f 20 65 6e 61 | 62 6c 65 2f 64 69 73 61 |L to ena|ble/disa|
|00000a40| 62 6c 65 20 77 61 69 74 | 69 6e 67 20 66 6f 72 20 |ble wait|ing for |
|00000a50| 76 62 6c 20 62 65 74 77 | 65 65 6e 20 0d 09 09 09 |vbl betw|een ....|
|00000a60| 77 72 69 74 65 20 61 6e | 64 20 72 65 61 64 20 6f |write an|d read o|
|00000a70| 66 20 43 4c 55 54 2e 20 | 49 20 69 6e 74 72 6f 64 |f CLUT. |I introd|
|00000a80| 75 63 65 20 74 68 65 20 | 77 61 69 74 20 74 6f 20 |uce the |wait to |
|00000a90| 73 65 65 20 69 66 20 69 | 74 20 77 6f 75 6c 64 20 |see if i|t would |
|00000aa0| 0d 09 09 09 68 65 6c 70 | 20 63 65 72 74 61 69 6e |....help| certain|
|00000ab0| 20 76 69 64 65 6f 20 63 | 61 72 64 73 20 70 61 73 | video c|ards pas|
|00000ac0| 73 20 74 68 65 20 74 65 | 73 74 73 2e 20 48 6f 77 |s the te|sts. How|
|00000ad0| 65 76 65 72 2c 20 69 6e | 20 62 6f 74 68 20 63 61 |ever, in| both ca|
|00000ae0| 73 65 73 0d 09 09 09 69 | 74 20 6d 61 64 65 20 6e |ses....i|t made n|
|00000af0| 6f 20 64 69 66 66 65 72 | 65 6e 63 65 20 61 6e 64 |o differ|ence and|
|00000b00| 20 74 68 65 20 65 78 70 | 6c 61 6e 61 74 69 6f 6e | the exp|lanation|
|00000b10| 20 74 75 72 6e 65 64 20 | 6f 75 74 20 74 6f 20 62 | turned |out to b|
|00000b20| 65 20 74 68 61 74 0d 09 | 09 09 63 73 63 53 65 74 |e that..|..cscSet|
|00000b30| 47 61 6d 6d 61 20 77 61 | 73 6e 27 74 20 73 75 70 |Gamma wa|sn't sup|
|00000b40| 70 6f 72 74 65 64 2e 20 | 53 6f 2c 20 69 6e 20 74 |ported. |So, in t|
|00000b50| 68 65 20 69 6e 74 65 72 | 65 73 74 20 6f 66 20 66 |he inter|est of f|
|00000b60| 61 73 74 20 74 65 73 74 | 69 6e 67 2c 0d 09 09 09 |ast test|ing,....|
|00000b70| 49 27 6d 20 6f 6d 69 74 | 74 69 6e 67 20 74 68 65 |I'm omit|ting the|
|00000b80| 20 77 61 69 74 2e 0d 33 | 2f 37 2f 39 36 20 64 67 | wait..3|/7/96 dg|
|00000b90| 70 20 46 69 78 20 70 72 | 6f 67 72 61 6d 20 74 6f |p Fix pr|ogram to|
|00000ba0| 20 72 65 66 6c 65 63 74 | 20 66 61 63 74 20 74 68 | reflect| fact th|
|00000bb0| 61 74 20 63 73 63 53 65 | 74 45 6e 74 72 69 65 73 |at cscSe|tEntries|
|00000bc0| 20 72 65 61 64 73 20 66 | 72 6f 6d 20 74 61 62 6c | reads f|rom tabl|
|00000bd0| 65 5b 30 5d 2c 2e 2e 2e | 2e 20 0d 09 09 09 77 68 |e[0],...|. ....wh|
|00000be0| 65 72 65 61 73 20 63 73 | 63 47 65 74 45 6e 74 72 |ereas cs|cGetEntr|
|00000bf0| 69 65 73 20 77 72 69 74 | 65 73 20 74 6f 20 74 61 |ies writ|es to ta|
|00000c00| 62 6c 65 5b 73 74 61 72 | 74 5d 2c 2e 2e 2e 2e 20 |ble[star|t],.... |
|00000c10| 0d 33 2f 32 36 2f 39 36 | 20 64 67 70 20 69 6e 63 |.3/26/96| dgp inc|
|00000c20| 72 65 61 73 65 20 74 6f | 6c 65 72 61 6e 63 65 20 |rease to|lerance |
|00000c30| 66 6f 72 20 72 65 63 6f | 67 6e 69 7a 69 6e 67 20 |for reco|gnizing |
|00000c40| 69 64 65 6e 74 69 74 79 | 2c 20 61 6c 6c 6f 77 20 |identity|, allow |
|00000c50| 69 6e 73 69 67 6e 69 66 | 69 63 61 6e 74 20 62 69 |insignif|icant bi|
|00000c60| 74 73 20 74 6f 20 62 65 | 20 67 61 72 62 61 67 65 |ts to be| garbage|
|00000c70| 2e 0d 2a 2f 0d 23 69 6e | 63 6c 75 64 65 20 22 56 |..*/.#in|clude "V|
|00000c80| 69 64 65 6f 54 6f 6f 6c | 62 6f 78 2e 68 22 0d 2f |ideoTool|box.h"./|
|00000c90| 2f 23 69 6e 63 6c 75 64 | 65 20 3c 45 72 72 6f 72 |/#includ|e <Error|
|00000ca0| 73 2e 68 3e 0d 23 69 6e | 63 6c 75 64 65 20 22 47 |s.h>.#in|clude "G|
|00000cb0| 44 49 6e 66 6f 2e 68 22 | 0d 23 64 65 66 69 6e 65 |DInfo.h"|.#define|
|00000cc0| 20 57 41 49 54 5f 46 4f | 52 5f 56 42 4c 20 30 09 | WAIT_FO|R_VBL 0.|
|00000cd0| 2f 2f 20 30 20 66 6f 72 | 20 6e 6f 20 77 61 69 74 |// 0 for| no wait|
|00000ce0| 3b 20 31 20 74 6f 20 77 | 61 69 74 20 66 6f 72 20 |; 1 to w|ait for |
|00000cf0| 76 62 6c 20 62 65 74 77 | 65 65 6e 20 77 72 69 74 |vbl betw|een writ|
|00000d00| 65 20 26 20 72 65 61 64 | 20 6f 66 20 43 4c 55 54 |e & read| of CLUT|
|00000d10| 2e 0d 0d 2f 2f 20 54 68 | 65 73 65 20 66 75 6e 63 |...// Th|ese func|
|00000d20| 74 69 6f 6e 73 20 61 72 | 65 20 73 6f 6c 65 6c 79 |tions ar|e solely|
|00000d30| 20 66 6f 72 20 75 73 65 | 20 77 69 74 68 69 6e 20 | for use| within |
|00000d40| 74 68 69 73 20 66 69 6c | 65 2e 0d 43 6f 6c 6f 72 |this fil|e..Color|
|00000d50| 53 70 65 63 20 2a 4d 61 | 6b 65 43 6c 75 74 54 61 |Spec *Ma|keClutTa|
|00000d60| 62 6c 65 28 47 44 48 61 | 6e 64 6c 65 20 64 65 76 |ble(GDHa|ndle dev|
|00000d70| 69 63 65 2c 73 68 6f 72 | 74 20 66 6c 61 67 73 29 |ice,shor|t flags)|
|00000d80| 3b 0d 4f 53 45 72 72 20 | 57 72 69 74 65 43 6c 75 |;.OSErr |WriteClu|
|00000d90| 74 28 47 44 48 61 6e 64 | 6c 65 20 64 65 76 69 63 |t(GDHand|le devic|
|00000da0| 65 2c 43 6f 6c 6f 72 53 | 70 65 63 20 70 75 74 54 |e,ColorS|pec putT|
|00000db0| 61 62 6c 65 5b 5d 2c 73 | 68 6f 72 74 20 66 6c 61 |able[],s|hort fla|
|00000dc0| 67 73 29 3b 0d 4f 53 45 | 72 72 20 53 68 6f 77 47 |gs);.OSE|rr ShowG|
|00000dd0| 61 6d 6d 61 54 61 62 6c | 65 28 46 49 4c 45 20 2a |ammaTabl|e(FILE *|
|00000de0| 6f 5b 32 5d 2c 47 44 48 | 61 6e 64 6c 65 20 64 65 |o[2],GDH|andle de|
|00000df0| 76 69 63 65 29 3b 0d 76 | 6f 69 64 20 52 47 42 54 |vice);.v|oid RGBT|
|00000e00| 6f 47 72 61 79 28 52 47 | 42 43 6f 6c 6f 72 20 2a |oGray(RG|BColor *|
|00000e10| 72 67 62 2c 73 68 6f 72 | 74 20 64 61 63 53 69 7a |rgb,shor|t dacSiz|
|00000e20| 65 29 3b 0d 42 6f 6f 6c | 65 61 6e 20 55 6e 65 71 |e);.Bool|ean Uneq|
|00000e30| 75 61 6c 43 6c 75 74 45 | 6e 74 72 79 28 52 47 42 |ualClutE|ntry(RGB|
|00000e40| 43 6f 6c 6f 72 20 2a 61 | 2c 52 47 42 43 6f 6c 6f |Color *a|,RGBColo|
|00000e50| 72 20 2a 62 2c 73 68 6f | 72 74 20 6d 61 73 6b 29 |r *b,sho|rt mask)|
|00000e60| 3b 0d 4f 53 45 72 72 20 | 56 69 73 69 62 6c 65 48 |;.OSErr |VisibleH|
|00000e70| 61 73 68 28 47 44 48 61 | 6e 64 6c 65 20 64 65 76 |ash(GDHa|ndle dev|
|00000e80| 69 63 65 2c 53 65 74 45 | 6e 74 72 69 65 73 46 75 |ice,SetE|ntriesFu|
|00000e90| 6e 63 74 69 6f 6e 20 66 | 75 6e 63 74 69 6f 6e 2c |nction f|unction,|
|00000ea0| 73 68 6f 72 74 20 63 6c | 75 74 45 6e 74 72 69 65 |short cl|utEntrie|
|00000eb0| 73 0d 09 2c 73 68 6f 72 | 74 20 2a 68 61 73 68 50 |s..,shor|t *hashP|
|00000ec0| 74 72 29 3b 0d 4f 53 45 | 72 72 20 45 73 74 69 6d |tr);.OSE|rr Estim|
|00000ed0| 61 74 65 43 6c 75 74 54 | 72 61 6e 73 66 6f 72 6d |ateClutT|ransform|
|00000ee0| 28 73 68 6f 72 74 20 66 | 6c 61 67 73 2c 56 69 64 |(short f|lags,Vid|
|00000ef0| 65 6f 49 6e 66 6f 20 2a | 63 61 72 64 29 3b 0d 4f |eoInfo *|card);.O|
|00000f00| 53 45 72 72 20 43 6f 6d | 70 75 74 65 52 4d 53 43 |SErr Com|puteRMSC|
|00000f10| 6c 75 74 45 72 72 6f 72 | 28 46 49 4c 45 20 2a 66 |lutError|(FILE *f|
|00000f20| 69 6c 65 0d 09 2c 43 6f | 6c 6f 72 53 70 65 63 20 |ile..,Co|lorSpec |
|00000f30| 2a 70 75 74 54 61 62 6c | 65 2c 43 6f 6c 6f 72 53 |*putTabl|e,ColorS|
|00000f40| 70 65 63 20 2a 67 65 74 | 54 61 62 6c 65 2c 73 68 |pec *get|Table,sh|
|00000f50| 6f 72 74 20 66 6c 61 67 | 73 2c 56 69 64 65 6f 49 |ort flag|s,VideoI|
|00000f60| 6e 66 6f 20 2a 63 61 72 | 64 29 3b 0d 4f 53 45 72 |nfo *car|d);.OSEr|
|00000f70| 72 20 57 72 69 74 65 41 | 6e 64 52 65 61 64 43 6c |r WriteA|ndReadCl|
|00000f80| 75 74 28 47 44 48 61 6e | 64 6c 65 20 64 65 76 69 |ut(GDHan|dle devi|
|00000f90| 63 65 2c 73 68 6f 72 74 | 20 66 6c 61 67 73 2c 43 |ce,short| flags,C|
|00000fa0| 6f 6c 6f 72 53 70 65 63 | 20 2a 2a 70 75 74 2c 43 |olorSpec| **put,C|
|00000fb0| 6f 6c 6f 72 53 70 65 63 | 20 2a 2a 67 65 74 29 3b |olorSpec| **get);|
|00000fc0| 0d 23 64 65 66 69 6e 65 | 20 53 69 78 74 65 65 6e |.#define| Sixteen|
|00000fd0| 42 69 74 47 72 61 79 20 | 31 0d 0d 4f 53 45 72 72 |BitGray |1..OSErr|
|00000fe0| 20 47 44 54 65 73 74 43 | 6c 75 74 28 46 49 4c 45 | GDTestC|lut(FILE|
|00000ff0| 20 2a 6f 5b 32 5d 2c 73 | 68 6f 72 74 20 66 6c 61 | *o[2],s|hort fla|
|00001000| 67 73 2c 56 69 64 65 6f | 49 6e 66 6f 20 2a 63 61 |gs,Video|Info *ca|
|00001010| 72 64 29 0d 7b 0d 09 73 | 68 6f 72 74 20 69 2c 6a |rd).{..s|hort i,j|
|00001020| 2c 63 6c 75 74 53 69 7a | 65 2c 71 75 69 63 6b 6c |,clutSiz|e,quickl|
|00001030| 79 2c 69 73 47 72 61 79 | 3b 0d 09 69 6e 74 20 65 |y,isGray|;..int e|
|00001040| 72 72 6f 72 3b 0d 09 43 | 6f 6c 6f 72 53 70 65 63 |rror;..C|olorSpec|
|00001050| 20 2a 70 75 74 54 61 62 | 6c 65 3d 4e 55 4c 4c 2c | *putTab|le=NULL,|
|00001060| 2a 67 65 74 54 61 62 6c | 65 3d 4e 55 4c 4c 3b 0d |*getTabl|e=NULL;.|
|00001070| 09 56 69 64 65 6f 43 61 | 72 64 43 6c 75 74 54 65 |.VideoCa|rdClutTe|
|00001080| 73 74 20 2a 63 6c 75 74 | 3b 0d 09 0d 09 69 66 28 |st *clut|;....if(|
|00001090| 63 61 72 64 2d 3e 64 65 | 76 69 63 65 3d 3d 4e 55 |card->de|vice==NU|
|000010a0| 4c 4c 29 72 65 74 75 72 | 6e 20 30 3b 0d 09 69 73 |LL)retur|n 0;..is|
|000010b0| 47 72 61 79 3d 21 54 65 | 73 74 44 65 76 69 63 65 |Gray=!Te|stDevice|
|000010c0| 41 74 74 72 69 62 75 74 | 65 28 63 61 72 64 2d 3e |Attribut|e(card->|
|000010d0| 64 65 76 69 63 65 2c 67 | 64 44 65 76 54 79 70 65 |device,g|dDevType|
|000010e0| 29 3b 0d 09 66 6f 72 28 | 71 75 69 63 6b 6c 79 3d |);..for(|quickly=|
|000010f0| 30 3b 71 75 69 63 6b 6c | 79 3c 32 3b 71 75 69 63 |0;quickl|y<2;quic|
|00001100| 6b 6c 79 2b 2b 29 7b 0d | 09 09 63 6c 75 74 3d 26 |kly++){.|..clut=&|
|00001110| 63 61 72 64 2d 3e 64 65 | 70 74 68 5b 63 61 72 64 |card->de|pth[card|
|00001120| 2d 3e 64 5d 2e 63 6c 75 | 74 5b 71 75 69 63 6b 6c |->d].clu|t[quickl|
|00001130| 79 5d 5b 69 73 47 72 61 | 79 5d 3b 0d 09 09 69 66 |y][isGra|y];...if|
|00001140| 28 21 63 6c 75 74 2d 3e | 72 65 61 64 2e 74 65 73 |(!clut->|read.tes|
|00001150| 74 65 64 29 7b 0d 09 09 | 09 66 6f 72 28 6a 3d 30 |ted){...|.for(j=0|
|00001160| 3b 6a 3c 33 3b 6a 2b 2b | 29 66 6f 72 28 69 3d 30 |;j<3;j++|)for(i=0|
|00001170| 3b 69 3c 33 3b 69 2b 2b | 29 63 6c 75 74 2d 3e 72 |;i<3;i++|)clut->r|
|00001180| 65 61 64 2e 72 67 62 47 | 61 69 6e 5b 6a 5d 5b 69 |ead.rgbG|ain[j][i|
|00001190| 5d 3d 4e 41 4e 3b 0d 09 | 09 09 66 6f 72 28 6a 3d |]=NAN;..|..for(j=|
|000011a0| 30 3b 6a 3c 33 3b 6a 2b | 2b 29 63 6c 75 74 2d 3e |0;j<3;j+|+)clut->|
|000011b0| 72 65 61 64 2e 72 67 62 | 45 72 72 6f 72 5b 6a 5d |read.rgb|Error[j]|
|000011c0| 3d 4e 41 4e 3b 0d 09 09 | 09 66 6f 72 28 6a 3d 30 |=NAN;...|.for(j=0|
|000011d0| 3b 6a 3c 33 3b 6a 2b 2b | 29 63 6c 75 74 2d 3e 72 |;j<3;j++|)clut->r|
|000011e0| 65 61 64 2e 72 67 62 45 | 72 72 6f 72 41 74 4f 6e |ead.rgbE|rrorAtOn|
|000011f0| 63 65 5b 6a 5d 3d 4e 41 | 4e 3b 0d 09 09 09 63 6c |ce[j]=NA|N;....cl|
|00001200| 75 74 2d 3e 72 65 61 64 | 2e 65 72 72 6f 72 73 3d |ut->read|.errors=|
|00001210| 30 3b 0d 09 09 09 63 6c | 75 74 2d 3e 72 65 61 64 |0;....cl|ut->read|
|00001220| 2e 65 72 72 6f 72 73 41 | 74 4f 6e 63 65 3d 30 3b |.errorsA|tOnce=0;|
|00001230| 0d 09 09 7d 0d 09 09 69 | 66 28 21 63 6c 75 74 2d |...}...i|f(!clut-|
|00001240| 3e 76 69 73 75 61 6c 2e | 74 65 73 74 65 64 29 7b |>visual.|tested){|
|00001250| 0d 09 09 09 63 6c 75 74 | 2d 3e 76 69 73 75 61 6c |....clut|->visual|
|00001260| 2e 65 72 72 6f 72 73 3d | 30 3b 0d 09 09 09 63 6c |.errors=|0;....cl|
|00001270| 75 74 2d 3e 76 69 73 75 | 61 6c 2e 65 72 72 6f 72 |ut->visu|al.error|
|00001280| 73 41 74 4f 6e 63 65 3d | 30 3b 0d 09 09 7d 0d 09 |sAtOnce=|0;...}..|
|00001290| 09 69 66 28 21 63 6c 75 | 74 2d 3e 68 61 73 68 2e |.if(!clu|t->hash.|
|000012a0| 74 65 73 74 65 64 29 7b | 0d 09 09 09 63 6c 75 74 |tested){|....clut|
|000012b0| 2d 3e 68 61 73 68 2e 65 | 72 72 6f 72 73 3d 30 3b |->hash.e|rrors=0;|
|000012c0| 0d 09 09 7d 0d 09 7d 0d | 09 71 75 69 63 6b 6c 79 |...}..}.|.quickly|
|000012d0| 3d 28 28 66 6c 61 67 73 | 26 74 65 73 74 43 6c 75 |=((flags|&testClu|
|000012e0| 74 51 75 69 63 6b 6c 79 | 46 6c 61 67 29 21 3d 30 |tQuickly|Flag)!=0|
|000012f0| 29 3b 0d 09 63 6c 75 74 | 3d 26 63 61 72 64 2d 3e |);..clut|=&card->|
|00001300| 64 65 70 74 68 5b 63 61 | 72 64 2d 3e 64 5d 2e 63 |depth[ca|rd->d].c|
|00001310| 6c 75 74 5b 71 75 69 63 | 6b 6c 79 5d 5b 69 73 47 |lut[quic|kly][isG|
|00001320| 72 61 79 5d 3b 0d 09 69 | 66 28 21 63 6c 75 74 2d |ray];..i|f(!clut-|
|00001330| 3e 72 65 61 64 2e 64 6f | 54 65 73 74 29 72 65 74 |>read.do|Test)ret|
|00001340| 75 72 6e 20 30 3b 0d 09 | 0d 09 47 44 49 6e 66 6f |urn 0;..|..GDInfo|
|00001350| 28 63 61 72 64 29 3b 0d | 09 69 66 28 63 61 72 64 |(card);.|.if(card|
|00001360| 2d 3e 64 65 76 69 63 65 | 3d 3d 4e 55 4c 4c 29 72 |->device|==NULL)r|
|00001370| 65 74 75 72 6e 20 30 3b | 0d 09 63 6c 75 74 53 69 |eturn 0;|..clutSi|
|00001380| 7a 65 3d 63 61 72 64 2d | 3e 64 65 70 74 68 5b 63 |ze=card-|>depth[c|
|00001390| 61 72 64 2d 3e 64 5d 2e | 63 6c 75 74 53 69 7a 65 |ard->d].|clutSize|
|000013a0| 3b 0d 09 65 72 72 6f 72 | 3d 47 44 53 61 76 65 47 |;..error|=GDSaveG|
|000013b0| 61 6d 6d 61 28 63 61 72 | 64 2d 3e 64 65 76 69 63 |amma(car|d->devic|
|000013c0| 65 29 3b 0d 09 65 72 72 | 6f 72 3d 47 44 55 6e 63 |e);..err|or=GDUnc|
|000013d0| 6f 72 72 65 63 74 65 64 | 47 61 6d 6d 61 28 63 61 |orrected|Gamma(ca|
|000013e0| 72 64 2d 3e 64 65 76 69 | 63 65 29 3b 0d 09 69 66 |rd->devi|ce);..if|
|000013f0| 28 65 72 72 6f 72 29 72 | 65 74 75 72 6e 20 65 72 |(error)r|eturn er|
|00001400| 72 6f 72 3b 0d 09 0d 09 | 65 72 72 6f 72 3d 45 73 |ror;....|error=Es|
|00001410| 74 69 6d 61 74 65 43 6c | 75 74 54 72 61 6e 73 66 |timateCl|utTransf|
|00001420| 6f 72 6d 28 66 6c 61 67 | 73 26 7e 74 65 73 74 43 |orm(flag|s&~testC|
|00001430| 6c 75 74 53 65 72 69 61 | 6c 6c 79 46 6c 61 67 2c |lutSeria|llyFlag,|
|00001440| 63 61 72 64 29 3b 0d 09 | 69 66 28 65 72 72 6f 72 |card);..|if(error|
|00001450| 29 67 6f 74 6f 20 64 6f | 6e 65 3b 0d 0d 09 65 72 |)goto do|ne;...er|
|00001460| 72 6f 72 3d 57 72 69 74 | 65 41 6e 64 52 65 61 64 |ror=Writ|eAndRead|
|00001470| 43 6c 75 74 28 63 61 72 | 64 2d 3e 64 65 76 69 63 |Clut(car|d->devic|
|00001480| 65 2c 66 6c 61 67 73 2c | 26 70 75 74 54 61 62 6c |e,flags,|&putTabl|
|00001490| 65 2c 26 67 65 74 54 61 | 62 6c 65 29 3b 0d 09 69 |e,&getTa|ble);..i|
|000014a0| 66 28 65 72 72 6f 72 29 | 67 6f 74 6f 20 64 6f 6e |f(error)|goto don|
|000014b0| 65 3b 0d 0d 09 2f 2f 20 | 43 4f 4d 50 41 52 45 0d |e;...// |COMPARE.|
|000014c0| 09 43 6f 6d 70 75 74 65 | 52 4d 53 43 6c 75 74 45 |.Compute|RMSClutE|
|000014d0| 72 72 6f 72 28 6f 5b 31 | 5d 2c 70 75 74 54 61 62 |rror(o[1|],putTab|
|000014e0| 6c 65 2c 67 65 74 54 61 | 62 6c 65 2c 66 6c 61 67 |le,getTa|ble,flag|
|000014f0| 73 2c 63 61 72 64 29 3b | 0d 09 63 61 72 64 2d 3e |s,card);|..card->|
|00001500| 63 6c 75 74 54 65 73 74 | 65 64 3d 31 3b 0d 09 0d |clutTest|ed=1;...|
|00001510| 09 64 6f 6e 65 3a 0d 09 | 44 69 73 70 6f 73 65 50 |.done:..|DisposeP|
|00001520| 74 72 28 28 50 74 72 29 | 70 75 74 54 61 62 6c 65 |tr((Ptr)|putTable|
|00001530| 29 3b 0d 09 44 69 73 70 | 6f 73 65 50 74 72 28 28 |);..Disp|osePtr((|
|00001540| 50 74 72 29 67 65 74 54 | 61 62 6c 65 29 3b 0d 09 |Ptr)getT|able);..|
|00001550| 47 44 52 65 73 74 6f 72 | 65 47 61 6d 6d 61 28 63 |GDRestor|eGamma(c|
|00001560| 61 72 64 2d 3e 64 65 76 | 69 63 65 29 3b 0d 09 47 |ard->dev|ice);..G|
|00001570| 44 52 65 73 74 6f 72 65 | 44 65 76 69 63 65 43 6c |DRestore|DeviceCl|
|00001580| 75 74 28 63 61 72 64 2d | 3e 64 65 76 69 63 65 29 |ut(card-|>device)|
|00001590| 3b 0d 0d 2f 2f 09 63 6c | 75 74 2d 3e 76 69 73 75 |;..//.cl|ut->visu|
|000015a0| 61 6c 2e 64 6f 54 65 73 | 74 20 7c 3d 20 65 72 72 |al.doTes|t |= err|
|000015b0| 6f 72 20 26 26 20 63 6c | 75 74 2d 3e 68 61 73 68 |or && cl|ut->hash|
|000015c0| 2e 64 6f 54 65 73 74 3b | 0d 2f 2f 09 69 66 28 63 |.doTest;|.//.if(c|
|000015d0| 6c 75 74 2d 3e 76 69 73 | 75 61 6c 2e 64 6f 54 65 |lut->vis|ual.doTe|
|000015e0| 73 74 29 65 72 72 6f 72 | 3d 47 44 54 65 73 74 43 |st)error|=GDTestC|
|000015f0| 6c 75 74 56 69 73 75 61 | 6c 6c 79 28 66 6c 61 67 |lutVisua|lly(flag|
|00001600| 73 2c 63 61 72 64 29 3b | 0d 09 72 65 74 75 72 6e |s,card);|..return|
|00001610| 20 65 72 72 6f 72 3b 0d | 7d 0d 0d 4f 53 45 72 72 | error;.|}..OSErr|
|00001620| 20 45 73 74 69 6d 61 74 | 65 43 6c 75 74 54 72 61 | Estimat|eClutTra|
|00001630| 6e 73 66 6f 72 6d 28 73 | 68 6f 72 74 20 66 6c 61 |nsform(s|hort fla|
|00001640| 67 73 2c 56 69 64 65 6f | 49 6e 66 6f 20 2a 63 61 |gs,Video|Info *ca|
|00001650| 72 64 29 0d 7b 0d 09 73 | 68 6f 72 74 20 69 2c 6a |rd).{..s|hort i,j|
|00001660| 2c 74 61 62 6c 65 53 69 | 7a 65 2c 71 75 69 63 6b |,tableSi|ze,quick|
|00001670| 6c 79 2c 69 73 47 72 61 | 79 3b 0d 09 69 6e 74 20 |ly,isGra|y;..int |
|00001680| 65 72 72 6f 72 3d 30 3b | 0d 09 43 6f 6c 6f 72 53 |error=0;|..ColorS|
|00001690| 70 65 63 20 2a 70 75 74 | 54 61 62 6c 65 2c 2a 67 |pec *put|Table,*g|
|000016a0| 65 74 54 61 62 6c 65 3b | 0d 09 56 69 64 65 6f 43 |etTable;|..VideoC|
|000016b0| 61 72 64 43 6c 75 74 54 | 65 73 74 20 2a 63 6c 75 |ardClutT|est *clu|
|000016c0| 74 3b 0d 09 6c 6f 6e 67 | 20 70 75 74 53 75 6d 5b |t;..long| putSum[|
|000016d0| 33 5d 2c 67 65 74 53 75 | 6d 5b 33 5d 5b 33 5d 3b |3],getSu|m[3][3];|
|000016e0| 0d 09 75 6e 73 69 67 6e | 65 64 20 73 68 6f 72 74 |..unsign|ed short|
|000016f0| 20 2a 70 75 74 33 2c 2a | 67 65 74 33 3b 0d 09 09 | *put3,*|get3;...|
|00001700| 0d 09 65 72 72 6f 72 3d | 57 72 69 74 65 41 6e 64 |..error=|WriteAnd|
|00001710| 52 65 61 64 43 6c 75 74 | 28 63 61 72 64 2d 3e 64 |ReadClut|(card->d|
|00001720| 65 76 69 63 65 2c 66 6c | 61 67 73 7c 74 65 73 74 |evice,fl|ags|test|
|00001730| 43 6c 75 74 47 61 69 6e | 73 2c 26 70 75 74 54 61 |ClutGain|s,&putTa|
|00001740| 62 6c 65 2c 26 67 65 74 | 54 61 62 6c 65 29 3b 0d |ble,&get|Table);.|
|00001750| 09 69 66 28 65 72 72 6f | 72 29 72 65 74 75 72 6e |.if(erro|r)return|
|00001760| 20 65 72 72 6f 72 3b 0d | 09 74 61 62 6c 65 53 69 | error;.|.tableSi|
|00001770| 7a 65 3d 47 65 74 50 74 | 72 53 69 7a 65 28 28 50 |ze=GetPt|rSize((P|
|00001780| 74 72 29 70 75 74 54 61 | 62 6c 65 29 2f 73 69 7a |tr)putTa|ble)/siz|
|00001790| 65 6f 66 28 70 75 74 54 | 61 62 6c 65 5b 30 5d 29 |eof(putT|able[0])|
|000017a0| 3b 0d 09 0d 09 2f 2f 20 | 45 73 74 69 6d 61 74 65 |;....// |Estimate|
|000017b0| 20 74 72 61 6e 73 66 6f | 72 6d 61 74 69 6f 6e 0d | transfo|rmation.|
|000017c0| 09 66 6f 72 28 69 3d 30 | 3b 69 3c 33 3b 69 2b 2b |.for(i=0|;i<3;i++|
|000017d0| 29 7b 0d 09 09 70 75 74 | 53 75 6d 5b 69 5d 3d 30 |){...put|Sum[i]=0|
|000017e0| 3b 0d 09 09 66 6f 72 28 | 6a 3d 30 3b 6a 3c 33 3b |;...for(|j=0;j<3;|
|000017f0| 6a 2b 2b 29 67 65 74 53 | 75 6d 5b 69 5d 5b 6a 5d |j++)getS|um[i][j]|
|00001800| 3d 30 3b 0d 09 7d 0d 09 | 66 6f 72 28 69 3d 30 3b |=0;..}..|for(i=0;|
|00001810| 69 3c 74 61 62 6c 65 53 | 69 7a 65 3b 69 2b 2b 29 |i<tableS|ize;i++)|
|00001820| 7b 0d 09 09 70 75 74 33 | 3d 28 75 6e 73 69 67 6e |{...put3|=(unsign|
|00001830| 65 64 20 73 68 6f 72 74 | 20 2a 29 26 70 75 74 54 |ed short| *)&putT|
|00001840| 61 62 6c 65 5b 69 5d 2e | 72 67 62 3b 0d 09 09 67 |able[i].|rgb;...g|
|00001850| 65 74 33 3d 28 75 6e 73 | 69 67 6e 65 64 20 73 68 |et3=(uns|igned sh|
|00001860| 6f 72 74 20 2a 29 26 67 | 65 74 54 61 62 6c 65 5b |ort *)&g|etTable[|
|00001870| 69 5d 2e 72 67 62 3b 0d | 09 09 70 75 74 53 75 6d |i].rgb;.|..putSum|
|00001880| 5b 69 25 33 5d 2b 3d 70 | 75 74 33 5b 69 25 33 5d |[i%3]+=p|ut3[i%3]|
|00001890| 3b 0d 09 09 66 6f 72 28 | 6a 3d 30 3b 6a 3c 33 3b |;...for(|j=0;j<3;|
|000018a0| 6a 2b 2b 29 67 65 74 53 | 75 6d 5b 6a 5d 5b 69 25 |j++)getS|um[j][i%|
|000018b0| 33 5d 2b 3d 67 65 74 33 | 5b 6a 5d 3b 0d 09 7d 0d |3]+=get3|[j];..}.|
|000018c0| 09 69 73 47 72 61 79 3d | 21 54 65 73 74 44 65 76 |.isGray=|!TestDev|
|000018d0| 69 63 65 41 74 74 72 69 | 62 75 74 65 28 63 61 72 |iceAttri|bute(car|
|000018e0| 64 2d 3e 64 65 76 69 63 | 65 2c 67 64 44 65 76 54 |d->devic|e,gdDevT|
|000018f0| 79 70 65 29 3b 0d 09 71 | 75 69 63 6b 6c 79 3d 28 |ype);..q|uickly=(|
|00001900| 28 66 6c 61 67 73 26 74 | 65 73 74 43 6c 75 74 51 |(flags&t|estClutQ|
|00001910| 75 69 63 6b 6c 79 46 6c | 61 67 29 21 3d 30 29 3b |uicklyFl|ag)!=0);|
|00001920| 0d 09 63 6c 75 74 3d 26 | 63 61 72 64 2d 3e 64 65 |..clut=&|card->de|
|00001930| 70 74 68 5b 63 61 72 64 | 2d 3e 64 5d 2e 63 6c 75 |pth[card|->d].clu|
|00001940| 74 5b 71 75 69 63 6b 6c | 79 5d 5b 69 73 47 72 61 |t[quickl|y][isGra|
|00001950| 79 5d 3b 0d 09 66 6f 72 | 28 69 3d 30 3b 69 3c 33 |y];..for|(i=0;i<3|
|00001960| 3b 69 2b 2b 29 66 6f 72 | 28 6a 3d 30 3b 6a 3c 33 |;i++)for|(j=0;j<3|
|00001970| 3b 6a 2b 2b 29 7b 0d 09 | 09 63 6c 75 74 2d 3e 72 |;j++){..|.clut->r|
|00001980| 65 61 64 2e 72 67 62 47 | 61 69 6e 5b 6a 5d 5b 69 |ead.rgbG|ain[j][i|
|00001990| 5d 3d 28 64 6f 75 62 6c | 65 29 67 65 74 53 75 6d |]=(doubl|e)getSum|
|000019a0| 5b 6a 5d 5b 69 5d 2f 70 | 75 74 53 75 6d 5b 69 5d |[j][i]/p|utSum[i]|
|000019b0| 3b 0d 09 09 69 66 28 63 | 6c 75 74 2d 3e 72 65 61 |;...if(c|lut->rea|
|000019c0| 64 2e 72 67 62 47 61 69 | 6e 5b 6a 5d 5b 69 5d 21 |d.rgbGai|n[j][i]!|
|000019d0| 3d 66 6c 6f 6f 72 28 63 | 6c 75 74 2d 3e 72 65 61 |=floor(c|lut->rea|
|000019e0| 64 2e 72 67 62 47 61 69 | 6e 5b 6a 5d 5b 69 5d 29 |d.rgbGai|n[j][i])|
|000019f0| 29 0d 09 09 09 63 6c 75 | 74 2d 3e 72 65 61 64 2e |)....clu|t->read.|
|00001a00| 72 67 62 47 61 69 6e 5b | 6a 5d 5b 69 5d 2b 3d 30 |rgbGain[|j][i]+=0|
|00001a10| 2e 35 2a 74 61 62 6c 65 | 53 69 7a 65 2f 70 75 74 |.5*table|Size/put|
|00001a20| 53 75 6d 5b 69 5d 3b 0d | 09 7d 0d 09 44 69 73 70 |Sum[i];.|.}..Disp|
|00001a30| 6f 73 65 50 74 72 28 28 | 50 74 72 29 70 75 74 54 |osePtr((|Ptr)putT|
|00001a40| 61 62 6c 65 29 3b 0d 09 | 44 69 73 70 6f 73 65 50 |able);..|DisposeP|
|00001a50| 74 72 28 28 50 74 72 29 | 67 65 74 54 61 62 6c 65 |tr((Ptr)|getTable|
|00001a60| 29 3b 0d 09 72 65 74 75 | 72 6e 20 65 72 72 6f 72 |);..retu|rn error|
|00001a70| 3b 0d 7d 0d 0d 4f 53 45 | 72 72 20 57 72 69 74 65 |;.}..OSE|rr Write|
|00001a80| 41 6e 64 52 65 61 64 43 | 6c 75 74 28 47 44 48 61 |AndReadC|lut(GDHa|
|00001a90| 6e 64 6c 65 20 64 65 76 | 69 63 65 2c 73 68 6f 72 |ndle dev|ice,shor|
|00001aa0| 74 20 66 6c 61 67 73 2c | 43 6f 6c 6f 72 53 70 65 |t flags,|ColorSpe|
|00001ab0| 63 20 2a 2a 70 75 74 2c | 43 6f 6c 6f 72 53 70 65 |c **put,|ColorSpe|
|00001ac0| 63 20 2a 2a 67 65 74 29 | 0d 7b 0d 09 73 68 6f 72 |c **get)|.{..shor|
|00001ad0| 74 20 69 2c 63 6c 75 74 | 53 69 7a 65 2c 74 61 62 |t i,clut|Size,tab|
|00001ae0| 6c 65 53 69 7a 65 3b 0d | 09 43 6f 6c 6f 72 53 70 |leSize;.|.ColorSp|
|00001af0| 65 63 20 73 70 65 63 2c | 2a 70 75 74 54 61 62 6c |ec spec,|*putTabl|
|00001b00| 65 2c 2a 67 65 74 54 61 | 62 6c 65 3b 0d 09 56 42 |e,*getTa|ble;..VB|
|00001b10| 4c 54 61 73 6b 41 6e 64 | 41 35 20 76 62 6c 3b 0d |LTaskAnd|A5 vbl;.|
|00001b20| 09 69 6e 74 20 65 72 72 | 6f 72 3d 30 3b 0d 0d 09 |.int err|or=0;...|
|00001b30| 63 6c 75 74 53 69 7a 65 | 3d 47 44 43 6c 75 74 53 |clutSize|=GDClutS|
|00001b40| 69 7a 65 28 64 65 76 69 | 63 65 29 3b 0d 0d 09 2f |ize(devi|ce);.../|
|00001b50| 2f 20 4d 41 4b 45 20 54 | 41 42 4c 45 20 46 4f 52 |/ MAKE T|ABLE FOR|
|00001b60| 20 43 4c 55 54 0d 09 2a | 70 75 74 3d 70 75 74 54 | CLUT..*|put=putT|
|00001b70| 61 62 6c 65 3d 4d 61 6b | 65 43 6c 75 74 54 61 62 |able=Mak|eClutTab|
|00001b80| 6c 65 28 64 65 76 69 63 | 65 2c 66 6c 61 67 73 29 |le(devic|e,flags)|
|00001b90| 3b 0d 09 69 66 28 70 75 | 74 54 61 62 6c 65 3d 3d |;..if(pu|tTable==|
|00001ba0| 4e 55 4c 4c 29 72 65 74 | 75 72 6e 20 4d 65 6d 45 |NULL)ret|urn MemE|
|00001bb0| 72 72 6f 72 28 29 3b 0d | 09 74 61 62 6c 65 53 69 |rror();.|.tableSi|
|00001bc0| 7a 65 3d 47 65 74 50 74 | 72 53 69 7a 65 28 28 50 |ze=GetPt|rSize((P|
|00001bd0| 74 72 29 70 75 74 54 61 | 62 6c 65 29 2f 73 69 7a |tr)putTa|ble)/siz|
|00001be0| 65 6f 66 28 70 75 74 54 | 61 62 6c 65 5b 30 5d 29 |eof(putT|able[0])|
|00001bf0| 3b 0d 09 0d 09 2f 2f 20 | 4d 41 4b 45 20 42 4c 41 |;....// |MAKE BLA|
|00001c00| 4e 4b 20 54 41 42 4c 45 | 0d 09 2a 67 65 74 3d 67 |NK TABLE|..*get=g|
|00001c10| 65 74 54 61 62 6c 65 3d | 28 43 6f 6c 6f 72 53 70 |etTable=|(ColorSp|
|00001c20| 65 63 20 2a 29 4e 65 77 | 50 74 72 28 47 65 74 50 |ec *)New|Ptr(GetP|
|00001c30| 74 72 53 69 7a 65 28 28 | 50 74 72 29 70 75 74 54 |trSize((|Ptr)putT|
|00001c40| 61 62 6c 65 29 29 3b 0d | 09 69 66 28 67 65 74 54 |able));.|.if(getT|
|00001c50| 61 62 6c 65 3d 3d 4e 55 | 4c 4c 29 72 65 74 75 72 |able==NU|LL)retur|
|00001c60| 6e 20 4d 65 6d 45 72 72 | 6f 72 28 29 3b 0d 09 73 |n MemErr|or();..s|
|00001c70| 70 65 63 2e 76 61 6c 75 | 65 3d 73 70 65 63 2e 72 |pec.valu|e=spec.r|
|00001c80| 67 62 2e 72 65 64 3d 73 | 70 65 63 2e 72 67 62 2e |gb.red=s|pec.rgb.|
|00001c90| 67 72 65 65 6e 3d 73 70 | 65 63 2e 72 67 62 2e 62 |green=sp|ec.rgb.b|
|00001ca0| 6c 75 65 3d 30 3b 0d 09 | 66 6f 72 28 69 3d 30 3b |lue=0;..|for(i=0;|
|00001cb0| 69 3c 74 61 62 6c 65 53 | 69 7a 65 3b 69 2b 2b 29 |i<tableS|ize;i++)|
|00001cc0| 67 65 74 54 61 62 6c 65 | 5b 69 5d 3d 73 70 65 63 |getTable|[i]=spec|
|00001cd0| 3b 0d 0d 09 2f 2f 20 57 | 52 49 54 45 20 43 4c 55 |;...// W|RITE CLU|
|00001ce0| 54 20 26 20 52 45 41 44 | 20 42 41 43 4b 2c 20 4f |T & READ| BACK, O|
|00001cf0| 4e 45 20 43 4c 55 54 2d | 46 55 4c 4c 20 41 54 20 |NE CLUT-|FULL AT |
|00001d00| 41 20 54 49 4d 45 0d 09 | 76 62 6c 2e 73 75 62 72 |A TIME..|vbl.subr|
|00001d10| 6f 75 74 69 6e 65 3d 4e | 55 4c 4c 3b 09 09 09 09 |outine=N|ULL;....|
|00001d20| 2f 2f 20 72 65 71 75 65 | 73 74 20 64 65 66 61 75 |// reque|st defau|
|00001d30| 6c 74 20 73 75 62 72 6f | 75 74 69 6e 65 0d 09 65 |lt subro|utine..e|
|00001d40| 72 72 6f 72 3d 56 42 4c | 49 6e 73 74 61 6c 6c 28 |rror=VBL|Install(|
|00001d50| 26 76 62 6c 2c 64 65 76 | 69 63 65 2c 31 30 30 30 |&vbl,dev|ice,1000|
|00001d60| 29 3b 0d 09 69 66 28 65 | 72 72 6f 72 29 50 72 69 |);..if(e|rror)Pri|
|00001d70| 6e 74 66 45 78 69 74 28 | 22 25 73 20 6c 69 6e 65 |ntfExit(|"%s line|
|00001d80| 20 25 64 2e 20 57 72 69 | 74 65 41 6e 64 52 65 61 | %d. Wri|teAndRea|
|00001d90| 64 43 6c 75 74 3a 56 42 | 4c 49 6e 73 74 61 6c 6c |dClut:VB|LInstall|
|00001da0| 20 65 72 72 6f 72 20 25 | 64 5c 6e 22 0d 09 09 2c | error %|d\n"...,|
|00001db0| 5f 5f 46 49 4c 45 5f 5f | 2c 5f 5f 4c 49 4e 45 5f |__FILE__|,__LINE_|
|00001dc0| 5f 2c 65 72 72 6f 72 29 | 3b 0d 09 76 62 6c 2e 76 |_,error)|;..vbl.v|
|00001dd0| 62 6c 2e 76 62 6c 43 6f | 75 6e 74 3d 31 3b 09 2f |bl.vblCo|unt=1;./|
|00001de0| 2f 20 65 6e 61 62 6c 65 | 20 74 68 65 20 69 6e 74 |/ enable| the int|
|00001df0| 65 72 72 75 70 74 20 73 | 65 72 76 69 63 65 20 72 |errupt s|ervice r|
|00001e00| 6f 75 74 69 6e 65 0d 09 | 66 6f 72 28 69 3d 30 3b |outine..|for(i=0;|
|00001e10| 69 3c 74 61 62 6c 65 53 | 69 7a 65 3b 69 2b 3d 63 |i<tableS|ize;i+=c|
|00001e20| 6c 75 74 53 69 7a 65 29 | 7b 0d 09 09 65 72 72 6f |lutSize)|{...erro|
|00001e30| 72 3d 57 72 69 74 65 43 | 6c 75 74 28 64 65 76 69 |r=WriteC|lut(devi|
|00001e40| 63 65 2c 26 70 75 74 54 | 61 62 6c 65 5b 69 5d 2c |ce,&putT|able[i],|
|00001e50| 66 6c 61 67 73 29 3b 0d | 09 09 69 66 28 65 72 72 |flags);.|..if(err|
|00001e60| 6f 72 29 62 72 65 61 6b | 3b 0d 09 09 76 62 6c 2e |or)break|;...vbl.|
|00001e70| 6e 65 77 46 72 61 6d 65 | 3d 30 3b 0d 09 09 69 66 |newFrame|=0;...if|
|00001e80| 28 57 41 49 54 5f 46 4f | 52 5f 56 42 4c 29 77 68 |(WAIT_FO|R_VBL)wh|
|00001e90| 69 6c 65 28 76 62 6c 2e | 6e 65 77 46 72 61 6d 65 |ile(vbl.|newFrame|
|00001ea0| 3d 3d 30 29 20 3b 09 2f | 2f 20 77 61 69 74 20 75 |==0) ;./|/ wait u|
|00001eb0| 6e 74 69 6c 20 63 6c 75 | 74 27 73 20 62 65 65 6e |ntil clu|t's been|
|00001ec0| 20 6c 6f 61 64 65 64 20 | 62 65 66 6f 72 65 20 72 | loaded |before r|
|00001ed0| 65 61 64 69 6e 67 20 69 | 74 0d 09 09 65 72 72 6f |eading i|t...erro|
|00001ee0| 72 3d 47 44 47 65 74 45 | 6e 74 72 69 65 73 28 64 |r=GDGetE|ntries(d|
|00001ef0| 65 76 69 63 65 2c 30 2c | 63 6c 75 74 53 69 7a 65 |evice,0,|clutSize|
|00001f00| 2d 31 2c 26 67 65 74 54 | 61 62 6c 65 5b 69 5d 29 |-1,&getT|able[i])|
|00001f10| 3b 09 2f 2f 20 46 69 78 | 65 64 20 33 2f 34 2f 39 |;.// Fix|ed 3/4/9|
|00001f20| 36 0d 09 09 69 66 28 65 | 72 72 6f 72 29 62 72 65 |6...if(e|rror)bre|
|00001f30| 61 6b 3b 0d 09 7d 0d 09 | 56 42 4c 52 65 6d 6f 76 |ak;..}..|VBLRemov|
|00001f40| 65 28 26 76 62 6c 29 3b | 0d 09 72 65 74 75 72 6e |e(&vbl);|..return|
|00001f50| 20 65 72 72 6f 72 3b 0d | 7d 0d 0d 4f 53 45 72 72 | error;.|}..OSErr|
|00001f60| 20 43 6f 6d 70 75 74 65 | 52 4d 53 43 6c 75 74 45 | Compute|RMSClutE|
|00001f70| 72 72 6f 72 28 46 49 4c | 45 20 2a 66 69 6c 65 0d |rror(FIL|E *file.|
|00001f80| 09 2c 43 6f 6c 6f 72 53 | 70 65 63 20 2a 70 75 74 |.,ColorS|pec *put|
|00001f90| 54 61 62 6c 65 2c 43 6f | 6c 6f 72 53 70 65 63 20 |Table,Co|lorSpec |
|00001fa0| 2a 67 65 74 54 61 62 6c | 65 2c 73 68 6f 72 74 20 |*getTabl|e,short |
|00001fb0| 66 6c 61 67 73 2c 56 69 | 64 65 6f 49 6e 66 6f 20 |flags,Vi|deoInfo |
|00001fc0| 2a 63 61 72 64 29 0d 7b | 0d 09 73 68 6f 72 74 20 |*card).{|..short |
|00001fd0| 69 2c 6a 2c 6b 2c 63 6c | 75 74 53 69 7a 65 2c 74 |i,j,k,cl|utSize,t|
|00001fe0| 61 62 6c 65 53 69 7a 65 | 2c 71 75 69 63 6b 6c 79 |ableSize|,quickly|
|00001ff0| 2c 69 73 47 72 61 79 2c | 69 6e 74 65 67 72 61 6c |,isGray,|integral|
|00002000| 47 61 69 6e 73 3b 0d 09 | 75 6e 73 69 67 6e 65 64 |Gains;..|unsigned|
|00002010| 20 73 68 6f 72 74 20 2a | 70 75 74 33 2c 2a 67 65 | short *|put3,*ge|
|00002020| 74 33 2c 6e 5b 33 5d 2c | 62 61 64 3b 0d 09 64 6f |t3,n[3],|bad;..do|
|00002030| 75 62 6c 65 20 65 2c 73 | 71 75 61 72 65 64 45 72 |uble e,s|quaredEr|
|00002040| 72 6f 72 5b 33 5d 2c 6d | 6f 64 65 6c 5b 33 5d 3b |ror[3],m|odel[3];|
|00002050| 0d 09 56 69 64 65 6f 43 | 61 72 64 43 6c 75 74 54 |..VideoC|ardClutT|
|00002060| 65 73 74 20 2a 63 6c 75 | 74 3b 0d 09 69 6e 74 20 |est *clu|t;..int |
|00002070| 65 72 72 6f 72 3d 30 3b | 0d 09 09 0d 09 69 73 47 |error=0;|.....isG|
|00002080| 72 61 79 3d 21 54 65 73 | 74 44 65 76 69 63 65 41 |ray=!Tes|tDeviceA|
|00002090| 74 74 72 69 62 75 74 65 | 28 63 61 72 64 2d 3e 64 |ttribute|(card->d|
|000020a0| 65 76 69 63 65 2c 67 64 | 44 65 76 54 79 70 65 29 |evice,gd|DevType)|
|000020b0| 3b 0d 09 71 75 69 63 6b | 6c 79 3d 28 28 66 6c 61 |;..quick|ly=((fla|
|000020c0| 67 73 26 74 65 73 74 43 | 6c 75 74 51 75 69 63 6b |gs&testC|lutQuick|
|000020d0| 6c 79 46 6c 61 67 29 21 | 3d 30 29 3b 0d 09 63 6c |lyFlag)!|=0);..cl|
|000020e0| 75 74 3d 26 63 61 72 64 | 2d 3e 64 65 70 74 68 5b |ut=&card|->depth[|
|000020f0| 63 61 72 64 2d 3e 64 5d | 2e 63 6c 75 74 5b 71 75 |card->d]|.clut[qu|
|00002100| 69 63 6b 6c 79 5d 5b 69 | 73 47 72 61 79 5d 3b 0d |ickly][i|sGray];.|
|00002110| 09 63 6c 75 74 53 69 7a | 65 3d 47 44 43 6c 75 74 |.clutSiz|e=GDClut|
|00002120| 53 69 7a 65 28 63 61 72 | 64 2d 3e 64 65 76 69 63 |Size(car|d->devic|
|00002130| 65 29 3b 0d 09 74 61 62 | 6c 65 53 69 7a 65 3d 47 |e);..tab|leSize=G|
|00002140| 65 74 50 74 72 53 69 7a | 65 28 28 50 74 72 29 70 |etPtrSiz|e((Ptr)p|
|00002150| 75 74 54 61 62 6c 65 29 | 2f 73 69 7a 65 6f 66 28 |utTable)|/sizeof(|
|00002160| 70 75 74 54 61 62 6c 65 | 5b 30 5d 29 3b 0d 0d 09 |putTable|[0]);...|
|00002170| 2f 2f 20 45 73 74 69 6d | 61 74 65 20 65 72 72 6f |// Estim|ate erro|
|00002180| 72 20 6f 66 20 6c 69 6e | 65 61 72 20 6d 6f 64 65 |r of lin|ear mode|
|00002190| 6c 0d 09 66 6f 72 28 69 | 3d 30 3b 69 3c 33 3b 69 |l..for(i|=0;i<3;i|
|000021a0| 2b 2b 29 7b 0d 09 09 73 | 71 75 61 72 65 64 45 72 |++){...s|quaredEr|
|000021b0| 72 6f 72 5b 69 5d 3d 30 | 3b 0d 09 09 6e 5b 69 5d |ror[i]=0|;...n[i]|
|000021c0| 3d 30 3b 0d 09 7d 0d 09 | 62 61 64 3d 30 3b 0d 09 |=0;..}..|bad=0;..|
|000021d0| 2f 2f 20 41 6c 6c 6f 77 | 20 65 72 72 6f 72 20 6f |// Allow| error o|
|000021e0| 66 20 61 20 66 65 77 20 | 6c 65 61 73 74 20 73 69 |f a few |least si|
|000021f0| 67 6e 69 66 69 63 61 6e | 74 20 73 74 65 70 73 20 |gnifican|t steps |
|00002200| 6f 66 20 64 61 63 0d 09 | 63 6c 75 74 2d 3e 72 65 |of dac..|clut->re|
|00002210| 61 64 2e 74 6f 6c 65 72 | 61 6e 63 65 3d 32 2e 39 |ad.toler|ance=2.9|
|00002220| 2a 28 31 3c 3c 28 31 36 | 2d 47 44 44 61 63 53 69 |*(1<<(16|-GDDacSi|
|00002230| 7a 65 28 63 61 72 64 2d | 3e 64 65 76 69 63 65 29 |ze(card-|>device)|
|00002240| 29 29 3b 0d 09 66 6f 72 | 28 69 3d 30 3b 69 3c 74 |));..for|(i=0;i<t|
|00002250| 61 62 6c 65 53 69 7a 65 | 3b 69 2b 2b 29 7b 0d 09 |ableSize|;i++){..|
|00002260| 09 70 75 74 33 3d 28 75 | 6e 73 69 67 6e 65 64 20 |.put3=(u|nsigned |
|00002270| 73 68 6f 72 74 20 2a 29 | 26 70 75 74 54 61 62 6c |short *)|&putTabl|
|00002280| 65 5b 69 5d 2e 72 67 62 | 3b 0d 09 09 67 65 74 33 |e[i].rgb|;...get3|
|00002290| 3d 28 75 6e 73 69 67 6e | 65 64 20 73 68 6f 72 74 |=(unsign|ed short|
|000022a0| 20 2a 29 26 67 65 74 54 | 61 62 6c 65 5b 69 5d 2e | *)&getT|able[i].|
|000022b0| 72 67 62 3b 0d 09 09 66 | 6f 72 28 6a 3d 30 3b 6a |rgb;...f|or(j=0;j|
|000022c0| 3c 33 3b 6a 2b 2b 29 7b | 0d 09 09 09 6d 6f 64 65 |<3;j++){|....mode|
|000022d0| 6c 5b 6a 5d 3d 70 75 74 | 33 5b 30 5d 2a 63 6c 75 |l[j]=put|3[0]*clu|
|000022e0| 74 2d 3e 72 65 61 64 2e | 72 67 62 47 61 69 6e 5b |t->read.|rgbGain[|
|000022f0| 6a 5d 5b 30 5d 0d 09 09 | 09 09 2b 70 75 74 33 5b |j][0]...|..+put3[|
|00002300| 31 5d 2a 63 6c 75 74 2d | 3e 72 65 61 64 2e 72 67 |1]*clut-|>read.rg|
|00002310| 62 47 61 69 6e 5b 6a 5d | 5b 31 5d 0d 09 09 09 09 |bGain[j]|[1].....|
|00002320| 2b 70 75 74 33 5b 32 5d | 2a 63 6c 75 74 2d 3e 72 |+put3[2]|*clut->r|
|00002330| 65 61 64 2e 72 67 62 47 | 61 69 6e 5b 6a 5d 5b 32 |ead.rgbG|ain[j][2|
|00002340| 5d 3b 0d 09 09 09 65 3d | 67 65 74 33 5b 6a 5d 2d |];....e=|get3[j]-|
|00002350| 6d 6f 64 65 6c 5b 6a 5d | 3b 0d 09 09 09 62 61 64 |model[j]|;....bad|
|00002360| 7c 3d 66 61 62 73 28 65 | 29 3e 63 6c 75 74 2d 3e ||=fabs(e|)>clut->|
|00002370| 72 65 61 64 2e 74 6f 6c | 65 72 61 6e 63 65 3b 0d |read.tol|erance;.|
|00002380| 09 09 09 73 71 75 61 72 | 65 64 45 72 72 6f 72 5b |...squar|edError[|
|00002390| 6a 5d 2b 3d 65 2a 65 3b | 0d 09 09 09 6e 5b 6a 5d |j]+=e*e;|....n[j]|
|000023a0| 2b 2b 3b 0d 09 09 7d 0d | 09 7d 0d 09 66 6f 72 28 |++;...}.|.}..for(|
|000023b0| 69 3d 30 3b 69 3c 33 3b | 69 2b 2b 29 7b 0d 09 09 |i=0;i<3;|i++){...|
|000023c0| 63 6c 75 74 2d 3e 72 65 | 61 64 2e 72 67 62 45 72 |clut->re|ad.rgbEr|
|000023d0| 72 6f 72 5b 69 5d 3d 73 | 71 72 74 28 73 71 75 61 |ror[i]=s|qrt(squa|
|000023e0| 72 65 64 45 72 72 6f 72 | 5b 69 5d 2f 6e 5b 69 5d |redError|[i]/n[i]|
|000023f0| 29 3b 0d 09 09 69 66 28 | 21 28 66 6c 61 67 73 26 |);...if(|!(flags&|
|00002400| 74 65 73 74 43 6c 75 74 | 53 65 72 69 61 6c 6c 79 |testClut|Serially|
|00002410| 46 6c 61 67 29 29 63 6c | 75 74 2d 3e 72 65 61 64 |Flag))cl|ut->read|
|00002420| 2e 72 67 62 45 72 72 6f | 72 41 74 4f 6e 63 65 5b |.rgbErro|rAtOnce[|
|00002430| 69 5d 3d 73 71 72 74 28 | 73 71 75 61 72 65 64 45 |i]=sqrt(|squaredE|
|00002440| 72 72 6f 72 5b 69 5d 2f | 6e 5b 69 5d 29 3b 0d 09 |rror[i]/|n[i]);..|
|00002450| 7d 0d 0d 09 63 6c 75 74 | 2d 3e 72 65 61 64 2e 69 |}...clut|->read.i|
|00002460| 64 65 6e 74 69 74 79 3d | 31 3b 0d 09 65 3d 31 2e |dentity=|1;..e=1.|
|00002470| 39 39 39 2a 70 6f 77 28 | 32 2c 2d 47 44 44 61 63 |999*pow(|2,-GDDac|
|00002480| 53 69 7a 65 28 63 61 72 | 64 2d 3e 64 65 76 69 63 |Size(car|d->devic|
|00002490| 65 29 29 3b 09 2f 2f 20 | 61 6c 6c 6f 77 20 6e 6f |e));.// |allow no|
|000024a0| 6e 73 69 67 6e 69 66 69 | 63 61 6e 74 20 62 69 74 |nsignifi|cant bit|
|000024b0| 73 20 74 6f 20 62 65 20 | 67 61 72 62 61 67 65 0d |s to be |garbage.|
|000024c0| 09 66 6f 72 28 69 3d 30 | 3b 69 3c 33 3b 69 2b 2b |.for(i=0|;i<3;i++|
|000024d0| 29 66 6f 72 28 6a 3d 30 | 3b 6a 3c 33 3b 6a 2b 2b |)for(j=0|;j<3;j++|
|000024e0| 29 63 6c 75 74 2d 3e 72 | 65 61 64 2e 69 64 65 6e |)clut->r|ead.iden|
|000024f0| 74 69 74 79 26 3d 28 66 | 61 62 73 28 63 6c 75 74 |tity&=(f|abs(clut|
|00002500| 2d 3e 72 65 61 64 2e 72 | 67 62 47 61 69 6e 5b 69 |->read.r|gbGain[i|
|00002510| 5d 5b 6a 5d 2d 28 69 3d | 3d 6a 29 29 3c 65 29 3b |][j]-(i=|=j))<e);|
|00002520| 0d 09 0d 09 69 66 28 62 | 61 64 29 7b 0d 09 09 63 |....if(b|ad){...c|
|00002530| 6c 75 74 2d 3e 72 65 61 | 64 2e 65 72 72 6f 72 73 |lut->rea|d.errors|
|00002540| 3d 31 3b 0d 09 09 69 66 | 28 21 28 66 6c 61 67 73 |=1;...if|(!(flags|
|00002550| 26 74 65 73 74 43 6c 75 | 74 53 65 72 69 61 6c 6c |&testClu|tSeriall|
|00002560| 79 46 6c 61 67 29 29 63 | 6c 75 74 2d 3e 72 65 61 |yFlag))c|lut->rea|
|00002570| 64 2e 65 72 72 6f 72 73 | 41 74 4f 6e 63 65 3d 31 |d.errors|AtOnce=1|
|00002580| 3b 0d 09 7d 0d 09 69 66 | 28 62 61 64 29 7b 0d 09 |;..}..if|(bad){..|
|00002590| 09 2f 2f 20 50 72 69 6e | 74 20 6f 6e 65 2d 6c 69 |.// Prin|t one-li|
|000025a0| 6e 65 20 65 72 72 6f 72 | 20 6d 65 73 73 61 67 65 |ne error| message|
|000025b0| 20 74 6f 20 66 69 6c 65 | 2e 0d 09 09 66 70 72 69 | to file|....fpri|
|000025c0| 6e 74 66 28 66 69 6c 65 | 2c 22 5c 6e 22 29 3b 0d |ntf(file|,"\n");.|
|000025d0| 09 09 69 66 28 66 6c 61 | 67 73 26 74 65 73 74 43 |..if(fla|gs&testC|
|000025e0| 6c 75 74 51 75 69 63 6b | 6c 79 46 6c 61 67 29 66 |lutQuick|lyFlag)f|
|000025f0| 70 72 69 6e 74 66 28 66 | 69 6c 65 2c 22 53 65 74 |printf(f|ile,"Set|
|00002600| 45 6e 74 72 69 65 73 51 | 75 69 63 6b 6c 79 20 21 |EntriesQ|uickly !|
|00002610| 3d 20 63 73 63 47 65 74 | 45 6e 74 72 69 65 73 2e |= cscGet|Entries.|
|00002620| 20 22 29 3b 0d 09 09 65 | 6c 73 65 20 73 77 69 74 | ");...e|lse swit|
|00002630| 63 68 28 28 2a 63 61 72 | 64 2d 3e 64 65 76 69 63 |ch((*car|d->devic|
|00002640| 65 29 2d 3e 67 64 54 79 | 70 65 29 7b 0d 09 09 63 |e)->gdTy|pe){...c|
|00002650| 61 73 65 20 66 69 78 65 | 64 54 79 70 65 3a 0d 09 |ase fixe|dType:..|
|00002660| 09 09 62 72 65 61 6b 3b | 0d 09 09 63 61 73 65 20 |..break;|...case |
|00002670| 63 6c 75 74 54 79 70 65 | 3a 0d 09 09 09 66 70 72 |clutType|:....fpr|
|00002680| 69 6e 74 66 28 66 69 6c | 65 2c 22 63 73 63 53 65 |intf(fil|e,"cscSe|
|00002690| 74 45 6e 74 72 69 65 73 | 20 21 3d 20 63 73 63 47 |tEntries| != cscG|
|000026a0| 65 74 45 6e 74 72 69 65 | 73 2e 20 22 29 3b 0d 09 |etEntrie|s. ");..|
|000026b0| 09 09 62 72 65 61 6b 3b | 0d 09 09 63 61 73 65 20 |..break;|...case |
|000026c0| 64 69 72 65 63 74 54 79 | 70 65 3a 0d 09 09 09 66 |directTy|pe:....f|
|000026d0| 70 72 69 6e 74 66 28 66 | 69 6c 65 2c 22 63 73 63 |printf(f|ile,"csc|
|000026e0| 44 69 72 65 63 74 53 65 | 74 45 6e 74 72 69 65 73 |DirectSe|tEntries|
|000026f0| 20 21 3d 20 63 73 63 47 | 65 74 45 6e 74 72 69 65 | != cscG|etEntrie|
|00002700| 73 2e 20 22 29 3b 0d 09 | 09 09 62 72 65 61 6b 3b |s. ");..|..break;|
|00002710| 0d 09 09 7d 0d 09 09 66 | 70 72 69 6e 74 66 28 66 |...}...f|printf(f|
|00002720| 69 6c 65 2c 22 25 64 2d | 62 69 74 20 22 2c 28 69 |ile,"%d-|bit ",(i|
|00002730| 6e 74 29 63 61 72 64 2d | 3e 64 65 70 74 68 5b 63 |nt)card-|>depth[c|
|00002740| 61 72 64 2d 3e 64 5d 2e | 70 69 78 65 6c 53 69 7a |ard->d].|pixelSiz|
|00002750| 65 29 3b 0d 09 09 69 66 | 28 69 73 47 72 61 79 29 |e);...if|(isGray)|
|00002760| 66 70 72 69 6e 74 66 28 | 66 69 6c 65 2c 22 67 72 |fprintf(|file,"gr|
|00002770| 61 79 20 70 69 78 65 6c | 73 2e 22 29 3b 0d 09 09 |ay pixel|s.");...|
|00002780| 65 6c 73 65 20 66 70 72 | 69 6e 74 66 28 66 69 6c |else fpr|intf(fil|
|00002790| 65 2c 22 63 6f 6c 6f 72 | 20 70 69 78 65 6c 73 2e |e,"color| pixels.|
|000027a0| 22 29 3b 0d 09 09 69 66 | 28 66 6c 61 67 73 26 74 |");...if|(flags&t|
|000027b0| 65 73 74 43 6c 75 74 53 | 65 72 69 61 6c 6c 79 46 |estClutS|eriallyF|
|000027c0| 6c 61 67 29 66 70 72 69 | 6e 74 66 28 66 69 6c 65 |lag)fpri|ntf(file|
|000027d0| 2c 22 20 4c 6f 61 64 65 | 64 20 6f 6e 65 20 63 6c |," Loade|d one cl|
|000027e0| 75 74 20 65 6e 74 72 79 | 20 61 74 20 61 20 74 69 |ut entry| at a ti|
|000027f0| 6d 65 2e 5c 6e 22 29 3b | 0d 09 09 65 6c 73 65 20 |me.\n");|...else |
|00002800| 66 70 72 69 6e 74 66 28 | 66 69 6c 65 2c 22 20 4c |fprintf(|file," L|
|00002810| 6f 61 64 65 64 20 77 68 | 6f 6c 65 20 63 6c 75 74 |oaded wh|ole clut|
|00002820| 20 61 74 20 6f 6e 63 65 | 2e 5c 6e 22 29 3b 0d 0d | at once|.\n");..|
|00002830| 09 09 2f 2f 20 50 72 69 | 6e 74 20 74 68 65 20 65 |..// Pri|nt the e|
|00002840| 73 74 69 6d 61 74 65 64 | 20 63 6f 6c 6f 72 20 74 |stimated| color t|
|00002850| 72 61 6e 73 66 6f 72 6d | 61 74 69 6f 6e 20 6d 61 |ransform|ation ma|
|00002860| 74 72 69 78 0d 09 09 66 | 70 72 69 6e 74 66 28 66 |trix...f|printf(f|
|00002870| 69 6c 65 2c 22 5c 22 65 | 78 70 65 63 74 65 64 5c |ile,"\"e|xpected\|
|00002880| 22 20 61 73 73 75 6d 65 | 73 20 74 68 65 20 62 65 |" assume|s the be|
|00002890| 73 74 2d 66 69 74 20 6c | 69 6e 65 61 72 20 63 6f |st-fit l|inear co|
|000028a0| 6c 6f 72 20 74 72 61 6e | 73 66 6f 72 6d 61 74 69 |lor tran|sformati|
|000028b0| 6f 6e 20 6d 61 74 72 69 | 78 3a 5c 6e 22 29 3b 0d |on matri|x:\n");.|
|000028c0| 09 09 69 6e 74 65 67 72 | 61 6c 47 61 69 6e 73 3d |..integr|alGains=|
|000028d0| 31 3b 0d 09 09 66 6f 72 | 28 6a 3d 30 3b 6a 3c 33 |1;...for|(j=0;j<3|
|000028e0| 3b 6a 2b 2b 29 66 6f 72 | 28 6b 3d 30 3b 6b 3c 33 |;j++)for|(k=0;k<3|
|000028f0| 3b 6b 2b 2b 29 0d 09 09 | 09 09 69 6e 74 65 67 72 |;k++)...|..integr|
|00002900| 61 6c 47 61 69 6e 73 26 | 3d 28 63 6c 75 74 2d 3e |alGains&|=(clut->|
|00002910| 72 65 61 64 2e 72 67 62 | 47 61 69 6e 5b 6a 5d 5b |read.rgb|Gain[j][|
|00002920| 6b 5d 3d 3d 66 6c 6f 6f | 72 28 63 6c 75 74 2d 3e |k]==floo|r(clut->|
|00002930| 72 65 61 64 2e 72 67 62 | 47 61 69 6e 5b 6a 5d 5b |read.rgb|Gain[j][|
|00002940| 6b 5d 29 29 3b 0d 09 09 | 66 6f 72 28 6a 3d 30 3b |k]));...|for(j=0;|
|00002950| 6a 3c 33 3b 6a 2b 2b 29 | 7b 0d 09 09 09 66 70 72 |j<3;j++)|{....fpr|
|00002960| 69 6e 74 66 28 66 69 6c | 65 2c 22 20 28 25 63 4f |intf(fil|e," (%cO|
|00002970| 75 74 b1 25 34 2e 31 66 | 25 25 29 25 63 22 0d 09 |ut.%4.1f|%%)%c"..|
|00002980| 09 09 09 2c 22 52 47 42 | 22 5b 6a 5d 2c 63 6c 75 |...,"RGB|"[j],clu|
|00002990| 74 2d 3e 72 65 61 64 2e | 72 67 62 45 72 72 6f 72 |t->read.|rgbError|
|000029a0| 5b 6a 5d 2a 31 30 30 2e | 2f 55 53 48 52 54 5f 4d |[j]*100.|/USHRT_M|
|000029b0| 41 58 2c 22 20 3d 20 22 | 5b 6a 5d 29 3b 0d 09 09 |AX," = "|[j]);...|
|000029c0| 09 69 66 28 69 6e 74 65 | 67 72 61 6c 47 61 69 6e |.if(inte|gralGain|
|000029d0| 73 29 66 70 72 69 6e 74 | 66 28 66 69 6c 65 2c 22 |s)fprint|f(file,"|
|000029e0| 28 25 31 2e 30 66 20 25 | 31 2e 30 66 20 25 31 2e |(%1.0f %|1.0f %1.|
|000029f0| 30 66 29 22 0d 09 09 09 | 09 2c 63 6c 75 74 2d 3e |0f)"....|.,clut->|
|00002a00| 72 65 61 64 2e 72 67 62 | 47 61 69 6e 5b 6a 5d 5b |read.rgb|Gain[j][|
|00002a10| 30 5d 2c 63 6c 75 74 2d | 3e 72 65 61 64 2e 72 67 |0],clut-|>read.rg|
|00002a20| 62 47 61 69 6e 5b 6a 5d | 5b 31 5d 2c 63 6c 75 74 |bGain[j]|[1],clut|
|00002a30| 2d 3e 72 65 61 64 2e 72 | 67 62 47 61 69 6e 5b 6a |->read.r|gbGain[j|
|00002a40| 5d 5b 32 5d 29 3b 0d 09 | 09 09 65 6c 73 65 20 66 |][2]);..|..else f|
|00002a50| 70 72 69 6e 74 66 28 66 | 69 6c 65 2c 22 28 25 33 |printf(f|ile,"(%3|
|00002a60| 2e 32 66 20 25 33 2e 32 | 66 20 25 33 2e 32 66 29 |.2f %3.2|f %3.2f)|
|00002a70| 22 0d 09 09 09 09 2c 63 | 6c 75 74 2d 3e 72 65 61 |".....,c|lut->rea|
|00002a80| 64 2e 72 67 62 47 61 69 | 6e 5b 6a 5d 5b 30 5d 2c |d.rgbGai|n[j][0],|
|00002a90| 63 6c 75 74 2d 3e 72 65 | 61 64 2e 72 67 62 47 61 |clut->re|ad.rgbGa|
|00002aa0| 69 6e 5b 6a 5d 5b 31 5d | 2c 63 6c 75 74 2d 3e 72 |in[j][1]|,clut->r|
|00002ab0| 65 61 64 2e 72 67 62 47 | 61 69 6e 5b 6a 5d 5b 32 |ead.rgbG|ain[j][2|
|00002ac0| 5d 29 3b 0d 09 09 09 66 | 70 72 69 6e 74 66 28 66 |]);....f|printf(f|
|00002ad0| 69 6c 65 2c 22 25 63 28 | 25 63 49 6e 29 5c 6e 22 |ile,"%c(|%cIn)\n"|
|00002ae0| 2c 22 20 78 20 22 5b 6a | 5d 2c 22 52 47 42 22 5b |," x "[j|],"RGB"[|
|00002af0| 6a 5d 29 3b 0d 09 09 7d | 0d 09 09 0d 09 09 2f 2f |j]);...}|......//|
|00002b00| 20 50 72 69 6e 74 20 65 | 61 63 68 20 63 6c 75 74 | Print e|ach clut|
|00002b10| 20 65 72 72 6f 72 2e 0d | 09 09 66 6f 72 28 69 3d | error..|..for(i=|
|00002b20| 30 3b 69 3c 74 61 62 6c | 65 53 69 7a 65 3b 69 2b |0;i<tabl|eSize;i+|
|00002b30| 2b 29 7b 0d 09 09 09 70 | 75 74 33 3d 28 75 6e 73 |+){....p|ut3=(uns|
|00002b40| 69 67 6e 65 64 20 73 68 | 6f 72 74 20 2a 29 26 70 |igned sh|ort *)&p|
|00002b50| 75 74 54 61 62 6c 65 5b | 69 5d 2e 72 67 62 3b 0d |utTable[|i].rgb;.|
|00002b60| 09 09 09 67 65 74 33 3d | 28 75 6e 73 69 67 6e 65 |...get3=|(unsigne|
|00002b70| 64 20 73 68 6f 72 74 20 | 2a 29 26 67 65 74 54 61 |d short |*)&getTa|
|00002b80| 62 6c 65 5b 69 5d 2e 72 | 67 62 3b 0d 09 09 09 62 |ble[i].r|gb;....b|
|00002b90| 61 64 3d 30 3b 0d 09 09 | 09 66 6f 72 28 6a 3d 30 |ad=0;...|.for(j=0|
|00002ba0| 3b 6a 3c 33 3b 6a 2b 2b | 29 7b 0d 09 09 09 09 6d |;j<3;j++|){.....m|
|00002bb0| 6f 64 65 6c 5b 6a 5d 3d | 70 75 74 33 5b 30 5d 2a |odel[j]=|put3[0]*|
|00002bc0| 63 6c 75 74 2d 3e 72 65 | 61 64 2e 72 67 62 47 61 |clut->re|ad.rgbGa|
|00002bd0| 69 6e 5b 6a 5d 5b 30 5d | 0d 09 09 09 09 09 2b 70 |in[j][0]|......+p|
|00002be0| 75 74 33 5b 31 5d 2a 63 | 6c 75 74 2d 3e 72 65 61 |ut3[1]*c|lut->rea|
|00002bf0| 64 2e 72 67 62 47 61 69 | 6e 5b 6a 5d 5b 31 5d 0d |d.rgbGai|n[j][1].|
|00002c00| 09 09 09 09 09 2b 70 75 | 74 33 5b 32 5d 2a 63 6c |.....+pu|t3[2]*cl|
|00002c10| 75 74 2d 3e 72 65 61 64 | 2e 72 67 62 47 61 69 6e |ut->read|.rgbGain|
|00002c20| 5b 6a 5d 5b 32 5d 3b 0d | 09 09 09 09 65 3d 67 65 |[j][2];.|....e=ge|
|00002c30| 74 33 5b 6a 5d 2d 6d 6f | 64 65 6c 5b 6a 5d 3b 0d |t3[j]-mo|del[j];.|
|00002c40| 09 09 09 09 62 61 64 7c | 3d 66 61 62 73 28 65 29 |....bad||=fabs(e)|
|00002c50| 3e 63 6c 75 74 2d 3e 72 | 65 61 64 2e 74 6f 6c 65 |>clut->r|ead.tole|
|00002c60| 72 61 6e 63 65 3b 0d 09 | 09 09 7d 0d 09 09 09 69 |rance;..|..}....i|
|00002c70| 66 28 30 20 26 26 20 62 | 61 64 29 66 70 72 69 6e |f(0 && b|ad)fprin|
|00002c80| 74 66 28 66 69 6c 65 2c | 22 43 6c 75 74 5b 25 33 |tf(file,|"Clut[%3|
|00002c90| 64 5d 20 77 72 6f 74 65 | 28 25 30 34 75 2c 25 30 |d] wrote|(%04u,%0|
|00002ca0| 34 75 2c 25 30 34 75 29 | 20 22 0d 09 09 09 09 22 |4u,%04u)| "....."|
|00002cb0| 65 78 70 65 63 74 65 64 | 28 25 30 34 2e 30 66 2c |expected|(%04.0f,|
|00002cc0| 25 30 34 2e 30 66 2c 25 | 30 34 2e 30 66 29 20 62 |%04.0f,%|04.0f) b|
|00002cd0| 75 74 20 72 65 61 64 28 | 25 30 34 75 2c 25 30 34 |ut read(|%04u,%04|
|00002ce0| 75 2c 25 30 34 75 29 5c | 6e 22 0d 09 09 09 09 2c |u,%04u)\|n".....,|
|00002cf0| 69 25 63 6c 75 74 53 69 | 7a 65 2c 70 75 74 33 5b |i%clutSi|ze,put3[|
|00002d00| 30 5d 2c 70 75 74 33 5b | 31 5d 2c 70 75 74 33 5b |0],put3[|1],put3[|
|00002d10| 32 5d 0d 09 09 09 09 2c | 6d 6f 64 65 6c 5b 30 5d |2].....,|model[0]|
|00002d20| 2c 6d 6f 64 65 6c 5b 31 | 5d 2c 6d 6f 64 65 6c 5b |,model[1|],model[|
|00002d30| 32 5d 0d 09 09 09 09 2c | 67 65 74 33 5b 30 5d 2c |2].....,|get3[0],|
|00002d40| 67 65 74 33 5b 31 5d 2c | 67 65 74 33 5b 32 5d 29 |get3[1],|get3[2])|
|00002d50| 3b 0d 09 09 09 69 66 28 | 62 61 64 29 66 70 72 69 |;....if(|bad)fpri|
|00002d60| 6e 74 66 28 66 69 6c 65 | 2c 22 43 6c 75 74 5b 25 |ntf(file|,"Clut[%|
|00002d70| 33 64 5d 20 77 72 6f 74 | 65 28 25 30 34 78 2c 25 |3d] wrot|e(%04x,%|
|00002d80| 30 34 78 2c 25 30 34 78 | 29 20 22 0d 09 09 09 09 |04x,%04x|) ".....|
|00002d90| 22 65 78 70 65 63 74 65 | 64 28 25 30 34 78 2c 25 |"expecte|d(%04x,%|
|00002da0| 30 34 78 2c 25 30 34 78 | 29 20 62 75 74 20 72 65 |04x,%04x|) but re|
|00002db0| 61 64 28 25 30 34 78 2c | 25 30 34 78 2c 25 30 34 |ad(%04x,|%04x,%04|
|00002dc0| 78 29 5c 6e 22 0d 09 09 | 09 09 2c 69 25 63 6c 75 |x)\n"...|..,i%clu|
|00002dd0| 74 53 69 7a 65 2c 70 75 | 74 33 5b 30 5d 2c 70 75 |tSize,pu|t3[0],pu|
|00002de0| 74 33 5b 31 5d 2c 70 75 | 74 33 5b 32 5d 0d 09 09 |t3[1],pu|t3[2]...|
|00002df0| 09 09 2c 28 75 6e 73 69 | 67 6e 65 64 20 73 68 6f |..,(unsi|gned sho|
|00002e00| 72 74 29 28 30 2e 35 2b | 6d 6f 64 65 6c 5b 30 5d |rt)(0.5+|model[0]|
|00002e10| 29 2c 28 75 6e 73 69 67 | 6e 65 64 20 73 68 6f 72 |),(unsig|ned shor|
|00002e20| 74 29 28 30 2e 35 2b 6d | 6f 64 65 6c 5b 31 5d 29 |t)(0.5+m|odel[1])|
|00002e30| 2c 28 75 6e 73 69 67 6e | 65 64 20 73 68 6f 72 74 |,(unsign|ed short|
|00002e40| 29 28 30 2e 35 2b 6d 6f | 64 65 6c 5b 32 5d 29 0d |)(0.5+mo|del[2]).|
|00002e50| 09 09 09 09 2c 67 65 74 | 33 5b 30 5d 2c 67 65 74 |....,get|3[0],get|
|00002e60| 33 5b 31 5d 2c 67 65 74 | 33 5b 32 5d 29 3b 0d 09 |3[1],get|3[2]);..|
|00002e70| 09 7d 0d 09 09 66 70 72 | 69 6e 74 66 28 66 69 6c |.}...fpr|intf(fil|
|00002e80| 65 2c 22 5c 6e 22 29 3b | 0d 09 7d 0d 09 63 6c 75 |e,"\n");|..}..clu|
|00002e90| 74 2d 3e 72 65 61 64 2e | 74 65 73 74 65 64 3d 31 |t->read.|tested=1|
|00002ea0| 3b 0d 09 72 65 74 75 72 | 6e 20 65 72 72 6f 72 3b |;..retur|n error;|
|00002eb0| 0d 7d 0d 0d 4f 53 45 72 | 72 20 47 44 54 65 73 74 |.}..OSEr|r GDTest|
|00002ec0| 43 6c 75 74 56 69 73 75 | 61 6c 6c 79 28 73 68 6f |ClutVisu|ally(sho|
|00002ed0| 72 74 20 66 6c 61 67 73 | 2c 56 69 64 65 6f 49 6e |rt flags|,VideoIn|
|00002ee0| 66 6f 20 2a 63 61 72 64 | 29 0d 7b 0d 09 69 6e 74 |fo *card|).{..int|
|00002ef0| 20 65 72 72 6f 72 3b 0d | 09 73 68 6f 72 74 20 63 | error;.|.short c|
|00002f00| 6c 75 74 53 69 7a 65 2c | 71 75 69 63 6b 6c 79 2c |lutSize,|quickly,|
|00002f10| 69 73 47 72 61 79 3b 0d | 09 43 6f 6c 6f 72 53 70 |isGray;.|.ColorSp|
|00002f20| 65 63 20 2a 70 75 74 54 | 61 62 6c 65 2c 2a 6e 6f |ec *putT|able,*no|
|00002f30| 72 6d 61 6c 54 61 62 6c | 65 3b 0d 09 42 6f 6f 6c |rmalTabl|e;..Bool|
|00002f40| 65 61 6e 20 77 65 69 72 | 64 45 72 72 6f 72 2c 6e |ean weir|dError,n|
|00002f50| 6f 72 6d 61 6c 45 72 72 | 6f 72 3b 0d 09 56 69 64 |ormalErr|or;..Vid|
|00002f60| 65 6f 43 61 72 64 43 6c | 75 74 54 65 73 74 20 2a |eoCardCl|utTest *|
|00002f70| 63 6c 75 74 3b 0d 09 0d | 09 69 73 47 72 61 79 3d |clut;...|.isGray=|
|00002f80| 21 54 65 73 74 44 65 76 | 69 63 65 41 74 74 72 69 |!TestDev|iceAttri|
|00002f90| 62 75 74 65 28 63 61 72 | 64 2d 3e 64 65 76 69 63 |bute(car|d->devic|
|00002fa0| 65 2c 67 64 44 65 76 54 | 79 70 65 29 3b 0d 09 71 |e,gdDevT|ype);..q|
|00002fb0| 75 69 63 6b 6c 79 3d 28 | 28 66 6c 61 67 73 26 74 |uickly=(|(flags&t|
|00002fc0| 65 73 74 43 6c 75 74 51 | 75 69 63 6b 6c 79 46 6c |estClutQ|uicklyFl|
|00002fd0| 61 67 29 21 3d 30 29 3b | 0d 09 63 6c 75 74 3d 26 |ag)!=0);|..clut=&|
|00002fe0| 63 61 72 64 2d 3e 64 65 | 70 74 68 5b 63 61 72 64 |card->de|pth[card|
|00002ff0| 2d 3e 64 5d 2e 63 6c 75 | 74 5b 71 75 69 63 6b 6c |->d].clu|t[quickl|
|00003000| 79 5d 5b 69 73 47 72 61 | 79 5d 3b 0d 09 69 66 28 |y][isGra|y];..if(|
|00003010| 63 6c 75 74 2d 3e 76 69 | 73 75 61 6c 2e 74 65 73 |clut->vi|sual.tes|
|00003020| 74 65 64 3d 3d 30 29 7b | 0d 09 09 63 6c 75 74 2d |ted==0){|...clut-|
|00003030| 3e 76 69 73 75 61 6c 2e | 65 72 72 6f 72 73 3d 30 |>visual.|errors=0|
|00003040| 3b 0d 09 09 63 6c 75 74 | 2d 3e 76 69 73 75 61 6c |;...clut|->visual|
|00003050| 2e 65 72 72 6f 72 73 41 | 74 4f 6e 63 65 3d 30 3b |.errorsA|tOnce=0;|
|00003060| 0d 09 7d 0d 09 69 66 28 | 63 61 72 64 2d 3e 64 65 |..}..if(|card->de|
|00003070| 76 69 63 65 3d 3d 4e 55 | 4c 4c 29 72 65 74 75 72 |vice==NU|LL)retur|
|00003080| 6e 20 30 3b 0d 09 63 6c | 75 74 53 69 7a 65 3d 47 |n 0;..cl|utSize=G|
|00003090| 44 43 6c 75 74 53 69 7a | 65 28 63 61 72 64 2d 3e |DClutSiz|e(card->|
|000030a0| 64 65 76 69 63 65 29 3b | 0d 09 6e 6f 72 6d 61 6c |device);|..normal|
|000030b0| 54 61 62 6c 65 3d 28 28 | 2a 2a 28 2a 2a 28 2a 2a |Table=((|**(**(**|
|000030c0| 63 61 72 64 2d 3e 64 65 | 76 69 63 65 29 2e 67 64 |card->de|vice).gd|
|000030d0| 50 4d 61 70 29 2e 70 6d | 54 61 62 6c 65 29 29 2e |PMap).pm|Table)).|
|000030e0| 63 74 54 61 62 6c 65 3b | 0d 09 69 66 28 63 61 72 |ctTable;|..if(car|
|000030f0| 64 2d 3e 64 65 76 69 63 | 65 3d 3d 47 65 74 4d 61 |d->devic|e==GetMa|
|00003100| 69 6e 44 65 76 69 63 65 | 28 29 29 0d 09 09 70 75 |inDevice|())...pu|
|00003110| 74 54 61 62 6c 65 3d 4d | 61 6b 65 43 6c 75 74 54 |tTable=M|akeClutT|
|00003120| 61 62 6c 65 28 63 61 72 | 64 2d 3e 64 65 76 69 63 |able(car|d->devic|
|00003130| 65 2c 74 65 73 74 43 6c | 75 74 4e 65 67 61 74 69 |e,testCl|utNegati|
|00003140| 76 65 46 6c 61 67 29 3b | 0d 09 65 6c 73 65 20 70 |veFlag);|..else p|
|00003150| 75 74 54 61 62 6c 65 3d | 4d 61 6b 65 43 6c 75 74 |utTable=|MakeClut|
|00003160| 54 61 62 6c 65 28 63 61 | 72 64 2d 3e 64 65 76 69 |Table(ca|rd->devi|
|00003170| 63 65 2c 66 6c 61 67 73 | 29 3b 0d 09 69 66 28 70 |ce,flags|);..if(p|
|00003180| 75 74 54 61 62 6c 65 3d | 3d 4e 55 4c 4c 29 72 65 |utTable=|=NULL)re|
|00003190| 74 75 72 6e 20 4d 65 6d | 45 72 72 6f 72 28 29 3b |turn Mem|Error();|
|000031a0| 0d 09 47 44 53 61 76 65 | 47 61 6d 6d 61 28 63 61 |..GDSave|Gamma(ca|
|000031b0| 72 64 2d 3e 64 65 76 69 | 63 65 29 3b 0d 09 47 44 |rd->devi|ce);..GD|
|000031c0| 55 6e 63 6f 72 72 65 63 | 74 65 64 47 61 6d 6d 61 |Uncorrec|tedGamma|
|000031d0| 28 63 61 72 64 2d 3e 64 | 65 76 69 63 65 29 3b 0d |(card->d|evice);.|
|000031e0| 09 65 72 72 6f 72 3d 57 | 72 69 74 65 43 6c 75 74 |.error=W|riteClut|
|000031f0| 28 63 61 72 64 2d 3e 64 | 65 76 69 63 65 2c 70 75 |(card->d|evice,pu|
|00003200| 74 54 61 62 6c 65 2c 66 | 6c 61 67 73 29 3b 0d 09 |tTable,f|lags);..|
|00003210| 69 66 28 65 72 72 6f 72 | 29 7b 0d 09 09 47 44 52 |if(error|){...GDR|
|00003220| 65 73 74 6f 72 65 47 61 | 6d 6d 61 28 63 61 72 64 |estoreGa|mma(card|
|00003230| 2d 3e 64 65 76 69 63 65 | 29 3b 0d 09 09 47 44 52 |->device|);...GDR|
|00003240| 65 73 74 6f 72 65 44 65 | 76 69 63 65 43 6c 75 74 |estoreDe|viceClut|
|00003250| 28 63 61 72 64 2d 3e 64 | 65 76 69 63 65 29 3b 0d |(card->d|evice);.|
|00003260| 09 09 72 65 74 75 72 6e | 20 65 72 72 6f 72 3b 0d |..return| error;.|
|00003270| 09 7d 0d 09 70 72 69 6e | 74 66 28 42 4c 41 4e 4b |.}..prin|tf(BLANK|
|00003280| 4c 49 4e 45 29 3b 0d 09 | 70 72 69 6e 74 66 28 22 |LINE);..|printf("|
|00003290| 53 63 72 65 65 6e 20 73 | 68 6f 75 6c 64 20 62 65 |Screen s|hould be|
|000032a0| 20 77 65 69 72 64 6c 79 | 20 63 6f 6c 6f 72 65 64 | weirdly| colored|
|000032b0| 3b 20 77 61 74 63 68 20 | 66 6f 72 20 73 75 62 74 |; watch |for subt|
|000032c0| 6c 65 20 63 68 61 6e 67 | 65 20 61 73 20 79 6f 75 |le chang|e as you|
|000032d0| 20 68 69 74 20 72 65 74 | 75 72 6e 3a 22 20 22 5c | hit ret|urn:" "\|
|000032e0| 72 22 29 3b 0d 09 77 68 | 69 6c 65 28 67 65 74 63 |r");..wh|ile(getc|
|000032f0| 68 61 72 55 6e 62 75 66 | 66 65 72 65 64 28 29 3d |harUnbuf|fered()=|
|00003300| 3d 2d 31 29 20 3b 0d 09 | 65 72 72 6f 72 3d 57 72 |=-1) ;..|error=Wr|
|00003310| 69 74 65 43 6c 75 74 28 | 63 61 72 64 2d 3e 64 65 |iteClut(|card->de|
|00003320| 76 69 63 65 2c 70 75 74 | 54 61 62 6c 65 2c 30 29 |vice,put|Table,0)|
|00003330| 3b 0d 09 69 66 28 65 72 | 72 6f 72 29 7b 0d 09 09 |;..if(er|ror){...|
|00003340| 47 44 52 65 73 74 6f 72 | 65 47 61 6d 6d 61 28 63 |GDRestor|eGamma(c|
|00003350| 61 72 64 2d 3e 64 65 76 | 69 63 65 29 3b 0d 09 09 |ard->dev|ice);...|
|00003360| 47 44 52 65 73 74 6f 72 | 65 44 65 76 69 63 65 43 |GDRestor|eDeviceC|
|00003370| 6c 75 74 28 63 61 72 64 | 2d 3e 64 65 76 69 63 65 |lut(card|->device|
|00003380| 29 3b 0d 09 09 72 65 74 | 75 72 6e 20 65 72 72 6f |);...ret|urn erro|
|00003390| 72 3b 0d 09 7d 0d 09 70 | 72 69 6e 74 66 28 42 4c |r;..}..p|rintf(BL|
|000033a0| 41 4e 4b 4c 49 4e 45 29 | 3b 0d 09 70 72 69 6e 74 |ANKLINE)|;..print|
|000033b0| 66 28 22 44 69 64 20 79 | 6f 75 20 73 65 65 20 61 |f("Did y|ou see a|
|000033c0| 6e 79 20 63 68 61 6e 67 | 65 20 61 74 20 61 6c 6c |ny chang|e at all|
|000033d0| 3f 22 29 3b 0d 09 77 65 | 69 72 64 45 72 72 6f 72 |?");..we|irdError|
|000033e0| 3d 59 65 73 4f 72 4e 6f | 28 30 29 3b 0d 09 70 72 |=YesOrNo|(0);..pr|
|000033f0| 69 6e 74 66 28 22 5c 72 | 22 29 3b 0d 09 65 72 72 |intf("\r|");..err|
|00003400| 6f 72 3d 57 72 69 74 65 | 43 6c 75 74 28 63 61 72 |or=Write|Clut(car|
|00003410| 64 2d 3e 64 65 76 69 63 | 65 2c 6e 6f 72 6d 61 6c |d->devic|e,normal|
|00003420| 54 61 62 6c 65 2c 66 6c | 61 67 73 29 3b 0d 09 70 |Table,fl|ags);..p|
|00003430| 72 69 6e 74 66 28 42 4c | 41 4e 4b 4c 49 4e 45 29 |rintf(BL|ANKLINE)|
|00003440| 3b 0d 09 70 72 69 6e 74 | 66 28 22 53 63 72 65 65 |;..print|f("Scree|
|00003450| 6e 20 73 68 6f 75 6c 64 | 20 62 65 20 6e 6f 72 6d |n should| be norm|
|00003460| 61 6c 20 6e 6f 77 3b 20 | 77 61 74 63 68 20 66 6f |al now; |watch fo|
|00003470| 72 20 73 75 62 74 6c 65 | 20 63 68 61 6e 67 65 20 |r subtle| change |
|00003480| 61 73 20 79 6f 75 20 68 | 69 74 20 72 65 74 75 72 |as you h|it retur|
|00003490| 6e 3a 22 20 22 5c 72 22 | 29 3b 0d 09 77 68 69 6c |n:" "\r"|);..whil|
|000034a0| 65 28 67 65 74 63 68 61 | 72 55 6e 62 75 66 66 65 |e(getcha|rUnbuffe|
|000034b0| 72 65 64 28 29 3d 3d 2d | 31 29 20 3b 0d 09 65 72 |red()==-|1) ;..er|
|000034c0| 72 6f 72 3d 57 72 69 74 | 65 43 6c 75 74 28 63 61 |ror=Writ|eClut(ca|
|000034d0| 72 64 2d 3e 64 65 76 69 | 63 65 2c 6e 6f 72 6d 61 |rd->devi|ce,norma|
|000034e0| 6c 54 61 62 6c 65 2c 30 | 29 3b 0d 09 70 72 69 6e |lTable,0|);..prin|
|000034f0| 74 66 28 42 4c 41 4e 4b | 4c 49 4e 45 29 3b 0d 09 |tf(BLANK|LINE);..|
|00003500| 70 72 69 6e 74 66 28 22 | 44 69 64 20 79 6f 75 20 |printf("|Did you |
|00003510| 73 65 65 20 61 6e 79 20 | 63 68 61 6e 67 65 20 61 |see any |change a|
|00003520| 74 20 61 6c 6c 3f 22 29 | 3b 0d 09 6e 6f 72 6d 61 |t all?")|;..norma|
|00003530| 6c 45 72 72 6f 72 3d 59 | 65 73 4f 72 4e 6f 28 30 |lError=Y|esOrNo(0|
|00003540| 29 3b 0d 09 70 72 69 6e | 74 66 28 22 5c 72 22 29 |);..prin|tf("\r")|
|00003550| 3b 0d 09 47 44 52 65 73 | 74 6f 72 65 47 61 6d 6d |;..GDRes|toreGamm|
|00003560| 61 28 63 61 72 64 2d 3e | 64 65 76 69 63 65 29 3b |a(card->|device);|
|00003570| 0d 09 47 44 52 65 73 74 | 6f 72 65 44 65 76 69 63 |..GDRest|oreDevic|
|00003580| 65 43 6c 75 74 28 63 61 | 72 64 2d 3e 64 65 76 69 |eClut(ca|rd->devi|
|00003590| 63 65 29 3b 0d 09 44 69 | 73 70 6f 73 65 50 74 72 |ce);..Di|sposePtr|
|000035a0| 28 28 50 74 72 29 70 75 | 74 54 61 62 6c 65 29 3b |((Ptr)pu|tTable);|
|000035b0| 0d 09 63 6c 75 74 2d 3e | 76 69 73 75 61 6c 2e 74 |..clut->|visual.t|
|000035c0| 65 73 74 65 64 2b 2b 3b | 0d 09 63 6c 75 74 2d 3e |ested++;|..clut->|
|000035d0| 76 69 73 75 61 6c 2e 65 | 72 72 6f 72 73 2b 3d 28 |visual.e|rrors+=(|
|000035e0| 77 65 69 72 64 45 72 72 | 6f 72 20 7c 7c 20 6e 6f |weirdErr|or || no|
|000035f0| 72 6d 61 6c 45 72 72 6f | 72 29 3b 0d 09 69 66 28 |rmalErro|r);..if(|
|00003600| 21 28 66 6c 61 67 73 26 | 74 65 73 74 43 6c 75 74 |!(flags&|testClut|
|00003610| 53 65 72 69 61 6c 6c 79 | 46 6c 61 67 29 29 63 6c |Serially|Flag))cl|
|00003620| 75 74 2d 3e 76 69 73 75 | 61 6c 2e 65 72 72 6f 72 |ut->visu|al.error|
|00003630| 73 41 74 4f 6e 63 65 2b | 3d 28 77 65 69 72 64 45 |sAtOnce+|=(weirdE|
|00003640| 72 72 6f 72 20 7c 7c 20 | 6e 6f 72 6d 61 6c 45 72 |rror || |normalEr|
|00003650| 72 6f 72 29 3b 0d 09 72 | 65 74 75 72 6e 20 30 3b |ror);..r|eturn 0;|
|00003660| 0d 7d 0d 0d 43 6f 6c 6f | 72 53 70 65 63 20 2a 4d |.}..Colo|rSpec *M|
|00003670| 61 6b 65 43 6c 75 74 54 | 61 62 6c 65 28 47 44 48 |akeClutT|able(GDH|
|00003680| 61 6e 64 6c 65 20 64 65 | 76 69 63 65 2c 73 68 6f |andle de|vice,sho|
|00003690| 72 74 20 66 6c 61 67 73 | 29 0d 7b 0d 09 73 68 6f |rt flags|).{..sho|
|000036a0| 72 74 20 69 2c 6a 2c 63 | 6c 75 74 53 69 7a 65 3b |rt i,j,c|lutSize;|
|000036b0| 0d 09 52 47 42 43 6f 6c | 6f 72 20 70 75 74 3b 0d |..RGBCol|or put;.|
|000036c0| 09 43 6f 6c 6f 72 53 70 | 65 63 20 2a 74 61 62 6c |.ColorSp|ec *tabl|
|000036d0| 65 3b 0d 09 0d 09 63 6c | 75 74 53 69 7a 65 3d 47 |e;....cl|utSize=G|
|000036e0| 44 43 6c 75 74 53 69 7a | 65 28 64 65 76 69 63 65 |DClutSiz|e(device|
|000036f0| 29 3b 0d 09 69 66 28 28 | 66 6c 61 67 73 26 74 65 |);..if((|flags&te|
|00003700| 73 74 43 6c 75 74 47 61 | 69 6e 73 29 20 26 26 20 |stClutGa|ins) && |
|00003710| 63 6c 75 74 53 69 7a 65 | 3c 31 36 29 63 6c 75 74 |clutSize|<16)clut|
|00003720| 53 69 7a 65 3d 31 36 3b | 0d 09 74 61 62 6c 65 3d |Size=16;|..table=|
|00003730| 28 43 6f 6c 6f 72 53 70 | 65 63 20 2a 29 4e 65 77 |(ColorSp|ec *)New|
|00003740| 50 74 72 28 73 69 7a 65 | 6f 66 28 2a 74 61 62 6c |Ptr(size|of(*tabl|
|00003750| 65 29 2a 63 6c 75 74 53 | 69 7a 65 29 3b 0d 09 69 |e)*clutS|ize);..i|
|00003760| 66 28 74 61 62 6c 65 3d | 3d 4e 55 4c 4c 29 72 65 |f(table=|=NULL)re|
|00003770| 74 75 72 6e 20 74 61 62 | 6c 65 3b 0d 09 66 6f 72 |turn tab|le;..for|
|00003780| 28 69 3d 30 3b 69 3c 63 | 6c 75 74 53 69 7a 65 3b |(i=0;i<c|lutSize;|
|00003790| 69 2b 2b 29 20 7b 0d 09 | 09 69 66 28 66 6c 61 67 |i++) {..|.if(flag|
|000037a0| 73 26 74 65 73 74 43 6c | 75 74 4e 65 67 61 74 69 |s&testCl|utNegati|
|000037b0| 76 65 46 6c 61 67 29 7b | 0d 09 09 09 70 75 74 3d |veFlag){|....put=|
|000037c0| 28 28 2a 2a 28 2a 2a 28 | 2a 2a 64 65 76 69 63 65 |((**(**(|**device|
|000037d0| 29 2e 67 64 50 4d 61 70 | 29 2e 70 6d 54 61 62 6c |).gdPMap|).pmTabl|
|000037e0| 65 29 29 2e 63 74 54 61 | 62 6c 65 5b 63 6c 75 74 |e)).ctTa|ble[clut|
|000037f0| 53 69 7a 65 2d 31 2d 69 | 5d 2e 72 67 62 3b 0d 09 |Size-1-i|].rgb;..|
|00003800| 09 7d 65 6c 73 65 20 69 | 66 28 66 6c 61 67 73 26 |.}else i|f(flags&|
|00003810| 74 65 73 74 43 6c 75 74 | 47 61 69 6e 73 29 7b 0d |testClut|Gains){.|
|00003820| 09 09 09 2f 2f 20 45 73 | 74 69 6d 61 74 65 20 72 |...// Es|timate r|
|00003830| 67 62 20 67 61 69 6e 73 | 20 6f 66 20 61 6e 79 20 |gb gains| of any |
|00003840| 74 72 61 6e 73 66 6f 72 | 6d 61 74 69 6f 6e 0d 09 |transfor|mation..|
|00003850| 09 09 70 75 74 2e 72 65 | 64 3d 70 75 74 2e 67 72 |..put.re|d=put.gr|
|00003860| 65 65 6e 3d 70 75 74 2e | 62 6c 75 65 3d 30 3b 0d |een=put.|blue=0;.|
|00003870| 09 09 09 6a 3d 28 30 78 | 66 66 66 66 4c 2a 69 2b |...j=(0x|ffffL*i+|
|00003880| 28 63 6c 75 74 53 69 7a | 65 2d 31 29 2f 32 29 2f |(clutSiz|e-1)/2)/|
|00003890| 28 63 6c 75 74 53 69 7a | 65 2d 31 29 3b 0d 09 09 |(clutSiz|e-1);...|
|000038a0| 09 73 77 69 74 63 68 28 | 69 25 33 29 7b 0d 09 09 |.switch(|i%3){...|
|000038b0| 09 63 61 73 65 20 30 3a | 0d 09 09 09 09 70 75 74 |.case 0:|.....put|
|000038c0| 2e 72 65 64 3d 6a 3b 0d | 09 09 09 09 62 72 65 61 |.red=j;.|....brea|
|000038d0| 6b 3b 0d 09 09 09 63 61 | 73 65 20 31 3a 0d 09 09 |k;....ca|se 1:...|
|000038e0| 09 09 70 75 74 2e 67 72 | 65 65 6e 3d 6a 3b 0d 09 |..put.gr|een=j;..|
|000038f0| 09 09 09 62 72 65 61 6b | 3b 0d 09 09 09 63 61 73 |...break|;....cas|
|00003900| 65 20 32 3a 0d 09 09 09 | 09 70 75 74 2e 62 6c 75 |e 2:....|.put.blu|
|00003910| 65 3d 6a 3b 0d 09 09 09 | 09 62 72 65 61 6b 3b 0d |e=j;....|.break;.|
|00003920| 09 09 09 7d 0d 09 09 7d | 65 6c 73 65 20 69 66 28 |...}...}|else if(|
|00003930| 66 6c 61 67 73 26 74 65 | 73 74 43 6c 75 74 4c 69 |flags&te|stClutLi|
|00003940| 6e 65 61 72 46 6c 61 67 | 29 7b 0d 09 09 09 2f 2f |nearFlag|){....//|
|00003950| 20 4c 69 6e 65 61 72 20 | 74 65 73 74 20 70 61 74 | Linear |test pat|
|00003960| 74 65 72 6e 0d 09 09 09 | 70 75 74 2e 72 65 64 3d |tern....|put.red=|
|00003970| 70 75 74 2e 67 72 65 65 | 6e 3d 70 75 74 2e 62 6c |put.gree|n=put.bl|
|00003980| 75 65 3d 30 3b 0d 09 09 | 09 6a 3d 30 78 66 66 66 |ue=0;...|.j=0xfff|
|00003990| 66 66 66 66 66 2a 28 69 | 2b 28 63 6c 75 74 53 69 |fffff*(i|+(clutSi|
|000039a0| 7a 65 2d 31 29 2f 32 29 | 2f 28 63 6c 75 74 53 69 |ze-1)/2)|/(clutSi|
|000039b0| 7a 65 2d 31 29 3b 0d 09 | 09 09 73 77 69 74 63 68 |ze-1);..|..switch|
|000039c0| 28 69 25 34 29 7b 0d 09 | 09 09 63 61 73 65 20 30 |(i%4){..|..case 0|
|000039d0| 3a 0d 09 09 09 09 70 75 | 74 2e 72 65 64 3d 70 75 |:.....pu|t.red=pu|
|000039e0| 74 2e 67 72 65 65 6e 3d | 70 75 74 2e 62 6c 75 65 |t.green=|put.blue|
|000039f0| 3d 6a 3b 0d 09 09 09 09 | 62 72 65 61 6b 3b 0d 09 |=j;.....|break;..|
|00003a00| 09 09 63 61 73 65 20 31 | 3a 0d 09 09 09 09 70 75 |..case 1|:.....pu|
|00003a10| 74 2e 72 65 64 3d 6a 3b | 0d 09 09 09 09 62 72 65 |t.red=j;|.....bre|
|00003a20| 61 6b 3b 0d 09 09 09 63 | 61 73 65 20 32 3a 0d 09 |ak;....c|ase 2:..|
|00003a30| 09 09 09 70 75 74 2e 67 | 72 65 65 6e 3d 6a 3b 0d |...put.g|reen=j;.|
|00003a40| 09 09 09 09 62 72 65 61 | 6b 3b 0d 09 09 09 63 61 |....brea|k;....ca|
|00003a50| 73 65 20 33 3a 0d 09 09 | 09 09 70 75 74 2e 62 6c |se 3:...|..put.bl|
|00003a60| 75 65 3d 6a 3b 0d 09 09 | 09 09 62 72 65 61 6b 3b |ue=j;...|..break;|
|00003a70| 0d 09 09 09 7d 0d 09 09 | 7d 65 6c 73 65 7b 0d 09 |....}...|}else{..|
|00003a80| 09 09 2f 2f 20 52 61 6e | 64 6f 6d 20 74 65 73 74 |..// Ran|dom test|
|00003a90| 20 70 61 74 74 65 72 6e | 0d 09 09 09 70 75 74 2e | pattern|....put.|
|00003aa0| 72 65 64 3d 72 61 6e 64 | 55 28 29 3b 0d 09 09 09 |red=rand|U();....|
|00003ab0| 70 75 74 2e 67 72 65 65 | 6e 3d 72 61 6e 64 55 28 |put.gree|n=randU(|
|00003ac0| 29 3b 0d 09 09 09 70 75 | 74 2e 62 6c 75 65 3d 72 |);....pu|t.blue=r|
|00003ad0| 61 6e 64 55 28 29 3b 0d | 09 09 7d 0d 09 09 69 66 |andU();.|..}...if|
|00003ae0| 28 21 53 69 78 74 65 65 | 6e 42 69 74 47 72 61 79 |(!Sixtee|nBitGray|
|00003af0| 29 7b 0d 09 09 09 70 75 | 74 2e 72 65 64 26 3d 30 |){....pu|t.red&=0|
|00003b00| 78 66 66 30 30 3b 0d 09 | 09 09 70 75 74 2e 67 72 |xff00;..|..put.gr|
|00003b10| 65 65 6e 26 3d 30 78 66 | 66 30 30 3b 0d 09 09 09 |een&=0xf|f00;....|
|00003b20| 70 75 74 2e 62 6c 75 65 | 26 3d 30 78 66 66 30 30 |put.blue|&=0xff00|
|00003b30| 3b 0d 09 09 7d 0d 09 09 | 74 61 62 6c 65 5b 69 5d |;...}...|table[i]|
|00003b40| 2e 72 67 62 3d 70 75 74 | 3b 0d 09 7d 0d 09 72 65 |.rgb=put|;..}..re|
|00003b50| 74 75 72 6e 20 74 61 62 | 6c 65 3b 0d 7d 0d 0d 4f |turn tab|le;.}..O|
|00003b60| 53 45 72 72 20 57 72 69 | 74 65 43 6c 75 74 28 47 |SErr Wri|teClut(G|
|00003b70| 44 48 61 6e 64 6c 65 20 | 64 65 76 69 63 65 2c 43 |DHandle |device,C|
|00003b80| 6f 6c 6f 72 53 70 65 63 | 20 70 75 74 54 61 62 6c |olorSpec| putTabl|
|00003b90| 65 5b 5d 2c 73 68 6f 72 | 74 20 66 6c 61 67 73 29 |e[],shor|t flags)|
|00003ba0| 0d 7b 0d 09 73 68 6f 72 | 74 20 69 2c 63 6c 75 74 |.{..shor|t i,clut|
|00003bb0| 53 69 7a 65 3d 47 44 43 | 6c 75 74 53 69 7a 65 28 |Size=GDC|lutSize(|
|00003bc0| 64 65 76 69 63 65 29 3b | 0d 09 63 68 61 72 20 70 |device);|..char p|
|00003bd0| 72 69 6f 72 69 74 79 3d | 37 3b 0d 09 69 6e 74 20 |riority=|7;..int |
|00003be0| 65 72 72 6f 72 3b 0d 09 | 53 65 74 45 6e 74 72 69 |error;..|SetEntri|
|00003bf0| 65 73 46 75 6e 63 74 69 | 6f 6e 20 66 75 6e 63 74 |esFuncti|on funct|
|00003c00| 69 6f 6e 3b 0d 0d 09 69 | 66 28 66 6c 61 67 73 26 |ion;...i|f(flags&|
|00003c10| 74 65 73 74 43 6c 75 74 | 51 75 69 63 6b 6c 79 46 |testClut|QuicklyF|
|00003c20| 6c 61 67 29 66 75 6e 63 | 74 69 6f 6e 3d 53 65 74 |lag)func|tion=Set|
|00003c30| 45 6e 74 72 69 65 73 51 | 75 69 63 6b 6c 79 3b 0d |EntriesQ|uickly;.|
|00003c40| 09 65 6c 73 65 20 66 75 | 6e 63 74 69 6f 6e 3d 47 |.else fu|nction=G|
|00003c50| 44 53 65 74 45 6e 74 72 | 69 65 73 42 79 54 79 70 |DSetEntr|iesByTyp|
|00003c60| 65 3b 0d 09 69 66 28 66 | 6c 61 67 73 26 74 65 73 |e;..if(f|lags&tes|
|00003c70| 74 43 6c 75 74 53 65 72 | 69 61 6c 6c 79 46 6c 61 |tClutSer|iallyFla|
|00003c80| 67 29 7b 0d 09 09 2f 2f | 20 4c 6f 61 64 20 6f 6e |g){...//| Load on|
|00003c90| 65 20 63 6c 75 74 20 65 | 6e 74 72 79 20 61 74 20 |e clut e|ntry at |
|00003ca0| 61 20 74 69 6d 65 0d 09 | 09 66 6f 72 28 69 3d 30 |a time..|.for(i=0|
|00003cb0| 3b 69 3c 63 6c 75 74 53 | 69 7a 65 3b 69 2b 2b 29 |;i<clutS|ize;i++)|
|00003cc0| 7b 0d 09 09 09 53 77 61 | 70 50 72 69 6f 72 69 74 |{....Swa|pPriorit|
|00003cd0| 79 28 26 70 72 69 6f 72 | 69 74 79 29 3b 09 2f 2f |y(&prior|ity);.//|
|00003ce0| 20 46 6f 72 63 65 20 64 | 72 69 76 65 72 20 74 6f | Force d|river to|
|00003cf0| 20 6c 6f 61 64 20 63 6c | 75 74 20 6e 6f 77 2e 0d | load cl|ut now..|
|00003d00| 09 09 09 65 72 72 6f 72 | 3d 28 66 75 6e 63 74 69 |...error|=(functi|
|00003d10| 6f 6e 29 28 64 65 76 69 | 63 65 2c 69 2c 30 2c 26 |on)(devi|ce,i,0,&|
|00003d20| 70 75 74 54 61 62 6c 65 | 5b 69 5d 29 3b 0d 09 09 |putTable|[i]);...|
|00003d30| 09 53 77 61 70 50 72 69 | 6f 72 69 74 79 28 26 70 |.SwapPri|ority(&p|
|00003d40| 72 69 6f 72 69 74 79 29 | 3b 0d 09 09 09 69 66 28 |riority)|;....if(|
|00003d50| 65 72 72 6f 72 29 72 65 | 74 75 72 6e 20 65 72 72 |error)re|turn err|
|00003d60| 6f 72 3b 0d 09 09 7d 0d | 09 7d 65 6c 73 65 7b 0d |or;...}.|.}else{.|
|00003d70| 09 09 2f 2f 20 4c 6f 61 | 64 20 77 68 6f 6c 65 20 |..// Loa|d whole |
|00003d80| 63 6c 75 74 20 61 74 20 | 6f 6e 63 65 0d 09 09 53 |clut at |once...S|
|00003d90| 77 61 70 50 72 69 6f 72 | 69 74 79 28 26 70 72 69 |wapPrior|ity(&pri|
|00003da0| 6f 72 69 74 79 29 3b 09 | 2f 2f 20 46 6f 72 63 65 |ority);.|// Force|
|00003db0| 20 64 72 69 76 65 72 20 | 74 6f 20 6c 6f 61 64 20 | driver |to load |
|00003dc0| 63 6c 75 74 20 6e 6f 77 | 2e 0d 09 09 65 72 72 6f |clut now|....erro|
|00003dd0| 72 3d 28 66 75 6e 63 74 | 69 6f 6e 29 28 64 65 76 |r=(funct|ion)(dev|
|00003de0| 69 63 65 2c 30 2c 63 6c | 75 74 53 69 7a 65 2d 31 |ice,0,cl|utSize-1|
|00003df0| 2c 70 75 74 54 61 62 6c | 65 29 3b 0d 09 09 53 77 |,putTabl|e);...Sw|
|00003e00| 61 70 50 72 69 6f 72 69 | 74 79 28 26 70 72 69 6f |apPriori|ty(&prio|
|00003e10| 72 69 74 79 29 3b 0d 09 | 09 69 66 28 65 72 72 6f |rity);..|.if(erro|
|00003e20| 72 29 72 65 74 75 72 6e | 20 65 72 72 6f 72 3b 0d |r)return| error;.|
|00003e30| 09 7d 0d 09 72 65 74 75 | 72 6e 20 30 3b 0d 7d 0d |.}..retu|rn 0;.}.|
|00003e40| 0d 4f 53 45 72 72 20 47 | 44 54 65 73 74 43 6c 75 |.OSErr G|DTestClu|
|00003e50| 74 48 61 73 68 28 73 68 | 6f 72 74 20 66 6c 61 67 |tHash(sh|ort flag|
|00003e60| 73 2c 56 69 64 65 6f 49 | 6e 66 6f 20 2a 63 61 72 |s,VideoI|nfo *car|
|00003e70| 64 29 7b 0d 09 53 65 74 | 45 6e 74 72 69 65 73 46 |d){..Set|EntriesF|
|00003e80| 75 6e 63 74 69 6f 6e 20 | 66 75 6e 63 74 69 6f 6e |unction |function|
|00003e90| 3b 0d 09 69 6e 74 20 65 | 72 72 6f 72 3b 0d 09 73 |;..int e|rror;..s|
|00003ea0| 68 6f 72 74 20 69 73 47 | 72 61 79 2c 71 75 69 63 |hort isG|ray,quic|
|00003eb0| 6b 6c 79 3b 0d 09 56 69 | 64 65 6f 43 61 72 64 43 |kly;..Vi|deoCardC|
|00003ec0| 6c 75 74 54 65 73 74 20 | 2a 63 6c 75 74 3b 0d 09 |lutTest |*clut;..|
|00003ed0| 0d 09 69 66 28 63 61 72 | 64 2d 3e 64 65 76 69 63 |..if(car|d->devic|
|00003ee0| 65 3d 3d 4e 55 4c 4c 29 | 72 65 74 75 72 6e 20 30 |e==NULL)|return 0|
|00003ef0| 3b 0d 09 71 75 69 63 6b | 6c 79 3d 28 28 66 6c 61 |;..quick|ly=((fla|
|00003f00| 67 73 26 74 65 73 74 43 | 6c 75 74 51 75 69 63 6b |gs&testC|lutQuick|
|00003f10| 6c 79 46 6c 61 67 29 21 | 3d 30 29 3b 0d 09 69 73 |lyFlag)!|=0);..is|
|00003f20| 47 72 61 79 3d 21 54 65 | 73 74 44 65 76 69 63 65 |Gray=!Te|stDevice|
|00003f30| 41 74 74 72 69 62 75 74 | 65 28 63 61 72 64 2d 3e |Attribut|e(card->|
|00003f40| 64 65 76 69 63 65 2c 67 | 64 44 65 76 54 79 70 65 |device,g|dDevType|
|00003f50| 29 3b 0d 09 63 6c 75 74 | 3d 26 63 61 72 64 2d 3e |);..clut|=&card->|
|00003f60| 64 65 70 74 68 5b 63 61 | 72 64 2d 3e 64 5d 2e 63 |depth[ca|rd->d].c|
|00003f70| 6c 75 74 5b 71 75 69 63 | 6b 6c 79 5d 5b 69 73 47 |lut[quic|kly][isG|
|00003f80| 72 61 79 5d 3b 0d 09 69 | 66 28 63 6c 75 74 2d 3e |ray];..i|f(clut->|
|00003f90| 68 61 73 68 2e 74 65 73 | 74 65 64 3d 3d 30 29 63 |hash.tes|ted==0)c|
|00003fa0| 6c 75 74 2d 3e 68 61 73 | 68 2e 65 72 72 6f 72 73 |lut->has|h.errors|
|00003fb0| 3d 30 3b 0d 09 69 66 28 | 21 63 6c 75 74 2d 3e 68 |=0;..if(|!clut->h|
|00003fc0| 61 73 68 2e 64 6f 54 65 | 73 74 29 72 65 74 75 72 |ash.doTe|st)retur|
|00003fd0| 6e 20 30 3b 0d 09 69 66 | 28 71 75 69 63 6b 6c 79 |n 0;..if|(quickly|
|00003fe0| 29 66 75 6e 63 74 69 6f | 6e 3d 53 65 74 45 6e 74 |)functio|n=SetEnt|
|00003ff0| 72 69 65 73 51 75 69 63 | 6b 6c 79 3b 0d 09 65 6c |riesQuic|kly;..el|
|00004000| 73 65 20 66 75 6e 63 74 | 69 6f 6e 3d 47 44 53 65 |se funct|ion=GDSe|
|00004010| 74 45 6e 74 72 69 65 73 | 42 79 54 79 70 65 3b 0d |tEntries|ByType;.|
|00004020| 09 65 72 72 6f 72 3d 56 | 69 73 69 62 6c 65 48 61 |.error=V|isibleHa|
|00004030| 73 68 28 63 61 72 64 2d | 3e 64 65 76 69 63 65 2c |sh(card-|>device,|
|00004040| 66 75 6e 63 74 69 6f 6e | 2c 30 2c 26 63 6c 75 74 |function|,0,&clut|
|00004050| 2d 3e 68 61 73 68 2e 65 | 72 72 6f 72 73 29 3b 0d |->hash.e|rrors);.|
|00004060| 09 63 6c 75 74 2d 3e 68 | 61 73 68 2e 74 65 73 74 |.clut->h|ash.test|
|00004070| 65 64 3d 31 3b 0d 09 72 | 65 74 75 72 6e 20 65 72 |ed=1;..r|eturn er|
|00004080| 72 6f 72 3b 0d 7d 0d 0d | 4f 53 45 72 72 20 56 69 |ror;.}..|OSErr Vi|
|00004090| 73 69 62 6c 65 48 61 73 | 68 28 47 44 48 61 6e 64 |sibleHas|h(GDHand|
|000040a0| 6c 65 20 64 65 76 69 63 | 65 2c 53 65 74 45 6e 74 |le devic|e,SetEnt|
|000040b0| 72 69 65 73 46 75 6e 63 | 74 69 6f 6e 20 66 75 6e |riesFunc|tion fun|
|000040c0| 63 74 69 6f 6e 2c 73 68 | 6f 72 74 20 63 6c 75 74 |ction,sh|ort clut|
|000040d0| 45 6e 74 72 69 65 73 0d | 09 2c 73 68 6f 72 74 20 |Entries.|.,short |
|000040e0| 2a 68 61 73 68 50 74 72 | 29 0d 7b 0d 09 69 6e 74 |*hashPtr|).{..int|
|000040f0| 20 65 72 72 6f 72 3b 0d | 09 73 68 6f 72 74 20 63 | error;.|.short c|
|00004100| 6c 75 74 53 69 7a 65 3b | 0d 09 73 68 6f 72 74 20 |lutSize;|..short |
|00004110| 68 61 73 68 3b 0d 09 6c | 6f 6e 67 20 74 69 63 6b |hash;..l|ong tick|
|00004120| 3b 0d 09 43 6f 6c 6f 72 | 53 70 65 63 20 2a 70 75 |;..Color|Spec *pu|
|00004130| 74 54 61 62 6c 65 2c 2a | 6c 69 6e 65 61 72 54 61 |tTable,*|linearTa|
|00004140| 62 6c 65 3d 4e 55 4c 4c | 3b 0d 0d 09 69 66 28 64 |ble=NULL|;...if(d|
|00004150| 65 76 69 63 65 3d 3d 4e | 55 4c 4c 20 7c 7c 20 28 |evice==N|ULL || (|
|00004160| 2a 2a 64 65 76 69 63 65 | 29 2e 67 64 54 79 70 65 |**device|).gdType|
|00004170| 3d 3d 66 69 78 65 64 54 | 79 70 65 29 72 65 74 75 |==fixedT|ype)retu|
|00004180| 72 6e 20 30 3b 0d 09 63 | 6c 75 74 53 69 7a 65 3d |rn 0;..c|lutSize=|
|00004190| 47 44 43 6c 75 74 53 69 | 7a 65 28 64 65 76 69 63 |GDClutSi|ze(devic|
|000041a0| 65 29 3b 0d 09 69 66 28 | 63 6c 75 74 45 6e 74 72 |e);..if(|clutEntr|
|000041b0| 69 65 73 3c 30 20 7c 7c | 20 63 6c 75 74 45 6e 74 |ies<0 ||| clutEnt|
|000041c0| 72 69 65 73 3e 63 6c 75 | 74 53 69 7a 65 29 72 65 |ries>clu|tSize)re|
|000041d0| 74 75 72 6e 20 31 3b 0d | 09 69 66 28 63 6c 75 74 |turn 1;.|.if(clut|
|000041e0| 45 6e 74 72 69 65 73 3d | 3d 30 29 63 6c 75 74 45 |Entries=|=0)clutE|
|000041f0| 6e 74 72 69 65 73 3d 63 | 6c 75 74 53 69 7a 65 3b |ntries=c|lutSize;|
|00004200| 0d 09 69 66 28 28 2a 2a | 64 65 76 69 63 65 29 2e |..if((**|device).|
|00004210| 67 64 54 79 70 65 3d 3d | 64 69 72 65 63 74 54 79 |gdType==|directTy|
|00004220| 70 65 29 7b 0d 09 09 69 | 66 28 66 75 6e 63 74 69 |pe){...i|f(functi|
|00004230| 6f 6e 3d 3d 47 44 53 65 | 74 45 6e 74 72 69 65 73 |on==GDSe|tEntries|
|00004240| 29 66 75 6e 63 74 69 6f | 6e 3d 47 44 44 69 72 65 |)functio|n=GDDire|
|00004250| 63 74 53 65 74 45 6e 74 | 72 69 65 73 3b 0d 09 09 |ctSetEnt|ries;...|
|00004260| 70 75 74 54 61 62 6c 65 | 3d 6c 69 6e 65 61 72 54 |putTable|=linearT|
|00004270| 61 62 6c 65 3d 47 44 4e | 65 77 4c 69 6e 65 61 72 |able=GDN|ewLinear|
|00004280| 43 6f 6c 6f 72 54 61 62 | 6c 65 28 64 65 76 69 63 |ColorTab|le(devic|
|00004290| 65 29 3b 0d 09 09 69 66 | 28 6c 69 6e 65 61 72 54 |e);...if|(linearT|
|000042a0| 61 62 6c 65 3d 3d 4e 55 | 4c 4c 29 72 65 74 75 72 |able==NU|LL)retur|
|000042b0| 6e 20 4d 65 6d 45 72 72 | 6f 72 28 29 3b 0d 09 7d |n MemErr|or();..}|
|000042c0| 65 6c 73 65 20 70 75 74 | 54 61 62 6c 65 3d 28 28 |else put|Table=((|
|000042d0| 2a 2a 28 2a 2a 28 2a 2a | 64 65 76 69 63 65 29 2e |**(**(**|device).|
|000042e0| 67 64 50 4d 61 70 29 2e | 70 6d 54 61 62 6c 65 29 |gdPMap).|pmTable)|
|000042f0| 29 2e 63 74 54 61 62 6c | 65 3b 0d 09 65 72 72 6f |).ctTabl|e;..erro|
|00004300| 72 3d 28 66 75 6e 63 74 | 69 6f 6e 29 28 64 65 76 |r=(funct|ion)(dev|
|00004310| 69 63 65 2c 30 2c 63 6c | 75 74 45 6e 74 72 69 65 |ice,0,cl|utEntrie|
|00004320| 73 2d 31 2c 70 75 74 54 | 61 62 6c 65 29 3b 0d 09 |s-1,putT|able);..|
|00004330| 69 66 28 21 65 72 72 6f | 72 29 7b 0d 09 09 70 72 |if(!erro|r){...pr|
|00004340| 69 6e 74 66 28 42 4c 41 | 4e 4b 4c 49 4e 45 29 3b |intf(BLA|NKLINE);|
|00004350| 0d 09 09 69 66 28 64 65 | 76 69 63 65 3d 3d 47 65 |...if(de|vice==Ge|
|00004360| 74 4d 61 69 6e 44 65 76 | 69 63 65 28 29 29 0d 09 |tMainDev|ice())..|
|00004370| 09 09 70 72 69 6e 74 66 | 28 22 44 6f 20 79 6f 75 |..printf|("Do you|
|00004380| 20 73 65 65 20 61 6e 79 | 20 64 79 6e 61 6d 69 63 | see any| dynamic|
|00004390| 20 62 6c 61 63 6b 20 73 | 70 65 63 6b 73 20 6f 6e | black s|pecks on|
|000043a0| 20 74 68 69 73 20 73 63 | 72 65 65 6e 3f 20 28 4e | this sc|reen? (N|
|000043b0| 6f 29 3a 22 29 3b 0d 09 | 09 65 6c 73 65 20 70 72 |o):");..|.else pr|
|000043c0| 69 6e 74 66 28 22 44 6f | 20 79 6f 75 20 73 65 65 |intf("Do| you see|
|000043d0| 20 61 6e 79 20 64 79 6e | 61 6d 69 63 20 62 6c 61 | any dyn|amic bla|
|000043e0| 63 6b 20 73 70 65 63 6b | 73 20 6f 6e 20 74 68 65 |ck speck|s on the|
|000043f0| 20 74 65 73 74 20 73 63 | 72 65 65 6e 3f 20 28 4e | test sc|reen? (N|
|00004400| 6f 29 3a 22 29 3b 0d 09 | 09 66 66 6c 75 73 68 28 |o):");..|.fflush(|
|00004410| 73 74 64 6f 75 74 29 3b | 0d 09 09 64 6f 7b 0d 09 |stdout);|...do{..|
|00004420| 09 09 74 69 63 6b 3d 54 | 69 63 6b 43 6f 75 6e 74 |..tick=T|ickCount|
|00004430| 28 29 3b 0d 09 09 09 64 | 6f 7b 0d 09 09 09 09 28 |();....d|o{.....(|
|00004440| 66 75 6e 63 74 69 6f 6e | 29 28 64 65 76 69 63 65 |function|)(device|
|00004450| 2c 30 2c 63 6c 75 74 45 | 6e 74 72 69 65 73 2d 31 |,0,clutE|ntries-1|
|00004460| 2c 70 75 74 54 61 62 6c | 65 29 3b 0d 09 09 09 7d |,putTabl|e);....}|
|00004470| 77 68 69 6c 65 28 54 69 | 63 6b 43 6f 75 6e 74 28 |while(Ti|ckCount(|
|00004480| 29 2d 74 69 63 6b 3c 33 | 30 29 3b 0d 09 09 7d 77 |)-tick<3|0);...}w|
|00004490| 68 69 6c 65 28 21 6b 62 | 68 69 74 28 29 29 3b 0d |hile(!kb|hit());.|
|000044a0| 09 09 68 61 73 68 3d 59 | 65 73 4f 72 4e 6f 28 30 |..hash=Y|esOrNo(0|
|000044b0| 29 3b 0d 09 09 70 72 69 | 6e 74 66 28 22 5c 72 22 |);...pri|ntf("\r"|
|000044c0| 29 3b 0d 09 09 69 66 28 | 6c 69 6e 65 61 72 54 61 |);...if(|linearTa|
|000044d0| 62 6c 65 21 3d 4e 55 4c | 4c 29 44 69 73 70 6f 73 |ble!=NUL|L)Dispos|
|000044e0| 65 50 74 72 28 28 50 74 | 72 29 6c 69 6e 65 61 72 |ePtr((Pt|r)linear|
|000044f0| 54 61 62 6c 65 29 3b 0d | 09 09 69 66 28 68 61 73 |Table);.|..if(has|
|00004500| 68 50 74 72 21 3d 4e 55 | 4c 4c 29 2a 68 61 73 68 |hPtr!=NU|LL)*hash|
|00004510| 50 74 72 3d 68 61 73 68 | 3b 0d 09 7d 0d 09 72 65 |Ptr=hash|;..}..re|
|00004520| 74 75 72 6e 20 65 72 72 | 6f 72 3b 0d 7d 0d 0d 42 |turn err|or;.}..B|
|00004530| 6f 6f 6c 65 61 6e 20 55 | 6e 65 71 75 61 6c 43 6c |oolean U|nequalCl|
|00004540| 75 74 45 6e 74 72 79 28 | 52 47 42 43 6f 6c 6f 72 |utEntry(|RGBColor|
|00004550| 20 2a 61 2c 52 47 42 43 | 6f 6c 6f 72 20 2a 62 2c | *a,RGBC|olor *b,|
|00004560| 73 68 6f 72 74 20 6d 61 | 73 6b 29 0d 7b 0d 09 72 |short ma|sk).{..r|
|00004570| 65 74 75 72 6e 20 28 61 | 2d 3e 72 65 64 26 6d 61 |eturn (a|->red&ma|
|00004580| 73 6b 29 21 3d 28 62 2d | 3e 72 65 64 26 6d 61 73 |sk)!=(b-|>red&mas|
|00004590| 6b 29 0d 09 09 7c 7c 28 | 61 2d 3e 67 72 65 65 6e |k)...||(|a->green|
|000045a0| 26 6d 61 73 6b 29 21 3d | 28 62 2d 3e 67 72 65 65 |&mask)!=|(b->gree|
|000045b0| 6e 26 6d 61 73 6b 29 0d | 09 09 7c 7c 28 61 2d 3e |n&mask).|..||(a->|
|000045c0| 62 6c 75 65 26 6d 61 73 | 6b 29 21 3d 28 62 2d 3e |blue&mas|k)!=(b->|
|000045d0| 62 6c 75 65 26 6d 61 73 | 6b 29 3b 0d 7d 0d 0d 2f |blue&mas|k);.}../|
|000045e0| 2a 0d 57 68 65 6e 20 79 | 6f 75 20 73 65 74 20 61 |*.When y|ou set a|
|000045f0| 20 76 69 64 65 6f 20 73 | 63 72 65 65 6e 20 74 6f | video s|creen to|
|00004600| 20 6d 6f 6e 6f 63 68 72 | 6f 6d 65 20 6f 72 20 22 | monochr|ome or "|
|00004610| 67 72 61 79 22 20 28 61 | 73 20 6f 70 70 6f 73 65 |gray" (a|s oppose|
|00004620| 64 20 74 6f 20 22 63 6f | 6c 6f 72 22 29 2c 0d 65 |d to "co|lor"),.e|
|00004630| 2e 67 2e 20 75 73 69 6e | 67 20 74 68 65 20 43 6f |.g. usin|g the Co|
|00004640| 6e 74 72 6f 6c 20 50 61 | 6e 65 6c 3a 4d 6f 6e 69 |ntrol Pa|nel:Moni|
|00004650| 74 6f 72 73 2c 20 74 68 | 65 20 72 65 71 75 65 73 |tors, th|e reques|
|00004660| 74 20 69 73 20 70 61 73 | 73 65 64 20 6f 6e 20 74 |t is pas|sed on t|
|00004670| 6f 20 74 68 65 20 76 69 | 64 65 6f 0d 64 72 69 76 |o the vi|deo.driv|
|00004680| 65 72 2e 20 54 68 65 20 | 76 69 64 65 6f 20 64 72 |er. The |video dr|
|00004690| 69 76 65 72 20 74 72 61 | 6e 73 66 6f 72 6d 73 20 |iver tra|nsforms |
|000046a0| 65 61 63 68 20 6f 66 20 | 79 6f 75 72 20 72 67 62 |each of |your rgb|
|000046b0| 20 74 72 69 70 6c 65 74 | 73 20 74 6f 20 61 0d 6c | triplet|s to a.l|
|000046c0| 75 6d 69 6e 61 6e 63 65 | 2d 65 71 75 69 76 61 6c |uminance|-equival|
|000046d0| 65 6e 74 20 67 72 61 79 | 2c 20 75 73 69 6e 67 20 |ent gray|, using |
|000046e0| 61 20 66 6f 72 6d 75 6c | 61 20 74 68 61 74 20 6d |a formul|a that m|
|000046f0| 75 73 74 20 62 65 20 76 | 65 72 79 20 73 69 6d 69 |ust be v|ery simi|
|00004700| 6c 61 72 2c 20 69 66 20 | 6e 6f 74 0d 65 71 75 69 |lar, if |not.equi|
|00004710| 76 61 6c 65 6e 74 2c 20 | 74 6f 20 74 68 65 20 63 |valent, |to the c|
|00004720| 6f 64 65 20 62 65 6c 6f | 77 2e 20 54 68 65 20 72 |ode belo|w. The r|
|00004730| 6f 75 6e 64 69 6e 67 20 | 69 73 20 62 61 64 2c 20 |ounding |is bad, |
|00004740| 65 2e 67 2e 20 61 6e 79 | 20 67 72 61 79 20 72 67 |e.g. any| gray rg|
|00004750| 62 20 74 72 69 70 6c 65 | 74 0d 28 69 2c 69 2c 69 |b triple|t.(i,i,i|
|00004760| 29 2c 20 6f 74 68 65 72 | 20 74 68 61 6e 20 28 30 |), other| than (0|
|00004770| 2c 30 2c 30 29 2c 20 69 | 73 20 74 72 61 6e 73 66 |,0,0), i|s transf|
|00004780| 6f 72 6d 65 64 20 74 6f | 20 28 69 2d 31 2c 69 2d |ormed to| (i-1,i-|
|00004790| 31 2c 69 2d 31 29 2c 20 | 77 68 69 63 68 20 69 73 |1,i-1), |which is|
|000047a0| 20 64 61 72 6b 65 72 2c | 0d 66 61 69 6c 69 6e 67 | darker,|.failing|
|000047b0| 20 74 6f 20 70 72 65 73 | 65 72 76 65 20 6c 75 6d | to pres|erve lum|
|000047c0| 69 6e 61 6e 63 65 2e 20 | 48 6f 77 65 76 65 72 2c |inance. |However,|
|000047d0| 20 6d 79 20 67 6f 61 6c | 20 77 61 73 20 74 6f 20 | my goal| was to |
|000047e0| 72 65 70 6c 69 63 61 74 | 65 20 41 70 70 6c 65 27 |replicat|e Apple'|
|000047f0| 73 20 63 72 75 6d 62 79 | 0d 74 72 61 6e 73 66 6f |s crumby|.transfo|
|00004800| 72 6d 61 74 69 6f 6e 2c | 20 6e 6f 74 20 74 6f 20 |rmation,| not to |
|00004810| 69 6d 70 72 6f 76 65 20 | 69 74 2e 20 49 20 70 72 |improve |it. I pr|
|00004820| 65 73 75 6d 65 20 74 68 | 61 74 20 74 68 65 20 72 |esume th|at the r|
|00004830| 65 61 73 6f 6e 20 74 68 | 61 74 20 49 20 68 61 76 |eason th|at I hav|
|00004840| 65 20 74 6f 20 74 72 69 | 6d 0d 6d 79 20 6e 75 6d |e to tri|m.my num|
|00004850| 62 65 72 73 20 64 6f 77 | 6e 20 61 20 74 61 64 20 |bers dow|n a tad |
|00004860| 28 2d 30 2e 30 30 30 30 | 31 29 20 69 73 20 74 68 |(-0.0000|1) is th|
|00004870| 61 74 20 49 27 6d 20 64 | 6f 69 6e 67 20 74 68 69 |at I'm d|oing thi|
|00004880| 73 20 77 69 74 68 20 38 | 30 2d 62 69 74 20 70 72 |s with 8|0-bit pr|
|00004890| 65 63 69 73 69 6f 6e 0d | 77 68 65 72 65 61 73 20 |ecision.|whereas |
|000048a0| 74 68 65 20 64 72 69 76 | 65 72 20 75 73 65 73 20 |the driv|er uses |
|000048b0| 74 68 65 20 36 34 2d 62 | 69 74 20 70 72 65 63 69 |the 64-b|it preci|
|000048c0| 73 69 6f 6e 20 6f 66 20 | 74 68 65 20 53 41 4e 45 |sion of |the SANE|
|000048d0| 20 72 6f 75 74 69 6e 65 | 73 2e 20 50 72 65 73 75 | routine|s. Presu|
|000048e0| 6d 61 62 6c 79 20 49 0d | 63 6f 75 6c 64 20 6f 62 |mably I.|could ob|
|000048f0| 74 61 69 6e 20 74 68 65 | 20 73 61 6d 65 20 72 65 |tain the| same re|
|00004900| 73 75 6c 74 20 62 79 20 | 63 6f 6d 70 69 6c 69 6e |sult by |compilin|
|00004910| 67 20 74 68 69 73 20 73 | 75 62 72 6f 75 74 69 6e |g this s|ubroutin|
|00004920| 65 20 73 65 70 61 72 61 | 74 65 6c 79 2c 20 74 6f |e separa|tely, to|
|00004930| 20 75 73 65 0d 36 34 2d | 62 69 74 20 66 6c 6f 61 | use.64-|bit floa|
|00004940| 74 69 6e 67 20 70 6f 69 | 6e 74 2c 20 73 69 6e 63 |ting poi|nt, sinc|
|00004950| 65 20 61 6c 6c 20 74 68 | 65 20 61 72 67 75 6d 65 |e all th|e argume|
|00004960| 6e 74 73 20 61 72 65 20 | 69 6e 74 73 2e 0d 2a 2f |nts are |ints..*/|
|00004970| 0d 76 6f 69 64 20 52 47 | 42 54 6f 47 72 61 79 28 |.void RG|BToGray(|
|00004980| 52 47 42 43 6f 6c 6f 72 | 20 2a 72 67 62 2c 73 68 |RGBColor| *rgb,sh|
|00004990| 6f 72 74 20 64 61 63 53 | 69 7a 65 29 0d 2f 2f 20 |ort dacS|ize).// |
|000049a0| 45 6d 70 69 72 69 63 61 | 6c 20 66 6f 72 6d 75 6c |Empirica|l formul|
|000049b0| 61 20 74 6f 20 72 65 70 | 6c 69 63 61 74 65 20 41 |a to rep|licate A|
|000049c0| 70 70 6c 65 27 73 20 6c | 75 6d 69 6e 61 6e 63 65 |pple's l|uminance|
|000049d0| 20 6d 61 70 70 69 6e 67 | 2e 0d 7b 0d 09 73 68 6f | mapping|..{..sho|
|000049e0| 72 74 20 69 2c 73 68 69 | 66 74 3b 0d 09 75 6e 73 |rt i,shi|ft;..uns|
|000049f0| 69 67 6e 65 64 20 6c 6f | 6e 67 20 6e 3b 0d 09 0d |igned lo|ng n;...|
|00004a00| 09 69 66 28 21 53 69 78 | 74 65 65 6e 42 69 74 47 |.if(!Six|teenBitG|
|00004a10| 72 61 79 29 7b 0d 09 09 | 73 68 69 66 74 3d 31 36 |ray){...|shift=16|
|00004a20| 2d 64 61 63 53 69 7a 65 | 3b 0d 09 09 69 3d 28 72 |-dacSize|;...i=(r|
|00004a30| 67 62 2d 3e 72 65 64 3e | 3e 73 68 69 66 74 29 2a |gb->red>|>shift)*|
|00004a40| 28 30 2e 33 30 2d 30 2e | 30 30 30 30 31 29 0d 09 |(0.30-0.|00001)..|
|00004a50| 09 09 2b 28 72 67 62 2d | 3e 67 72 65 65 6e 3e 3e |..+(rgb-|>green>>|
|00004a60| 73 68 69 66 74 29 2a 28 | 30 2e 35 39 2d 30 2e 30 |shift)*(|0.59-0.0|
|00004a70| 30 30 30 31 29 2b 28 72 | 67 62 2d 3e 62 6c 75 65 |0001)+(r|gb->blue|
|00004a80| 3e 3e 73 68 69 66 74 29 | 2a 28 30 2e 31 31 29 3b |>>shift)|*(0.11);|
|00004a90| 0d 09 09 6e 3d 30 78 66 | 66 66 66 66 66 66 66 55 |...n=0xf|fffffffU|
|00004aa0| 4c 2f 28 28 31 3c 3c 64 | 61 63 53 69 7a 65 29 2d |L/((1<<d|acSize)-|
|00004ab0| 31 29 3b 0d 09 09 72 67 | 62 2d 3e 72 65 64 3d 72 |1);...rg|b->red=r|
|00004ac0| 67 62 2d 3e 67 72 65 65 | 6e 3d 72 67 62 2d 3e 62 |gb->gree|n=rgb->b|
|00004ad0| 6c 75 65 3d 28 69 2a 6e | 29 3e 3e 31 36 3b 0d 09 |lue=(i*n|)>>16;..|
|00004ae0| 7d 65 6c 73 65 7b 0d 09 | 09 72 67 62 2d 3e 72 65 |}else{..|.rgb->re|
|00004af0| 64 3d 72 67 62 2d 3e 67 | 72 65 65 6e 3d 72 67 62 |d=rgb->g|reen=rgb|
|00004b00| 2d 3e 62 6c 75 65 3d 72 | 67 62 2d 3e 72 65 64 2a |->blue=r|gb->red*|
|00004b10| 28 30 2e 33 30 2d 30 2e | 30 30 30 30 31 29 0d 09 |(0.30-0.|00001)..|
|00004b20| 09 09 2b 72 67 62 2d 3e | 67 72 65 65 6e 2a 28 30 |..+rgb->|green*(0|
|00004b30| 2e 35 39 29 2b 72 67 62 | 2d 3e 62 6c 75 65 2a 28 |.59)+rgb|->blue*(|
|00004b40| 30 2e 31 31 2d 30 2e 30 | 30 30 30 31 29 3b 0d 09 |0.11-0.0|0001);..|
|00004b50| 7d 0d 7d 0d 0d 00 00 00 | 00 00 00 00 00 00 00 00 |}.}.....|........|
|00004b60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004b70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004b80| 00 00 01 00 00 00 06 2c | 00 00 05 2c 00 00 00 9e |.......,|...,....|
|00004b90| 65 73 73 28 74 68 65 54 | 72 61 70 2c 20 74 54 79 |ess(theT|rap, tTy|
|00004ba0| 70 65 29 20 21 3d 20 4e | 47 65 74 54 72 61 70 41 |pe) != N|GetTrapA|
|00004bb0| 0c 47 44 54 65 73 74 43 | 6c 75 74 2e 63 43 02 00 |.GDTestC|lut.cC..|
|00004bc0| 02 00 54 45 58 54 43 57 | 49 45 01 00 00 28 01 e0 |..TEXTCW|IE...(..|
|00004bd0| 02 00 54 45 58 54 43 57 | 49 45 01 00 00 28 01 e0 |..TEXTCW|IE...(..|
|00004be0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004bf0| 00 00 a7 f6 6b 01 00 00 | 4a d5 00 00 06 ca 61 70 |....k...|J.....ap|
|00004c00| 41 64 64 72 65 73 73 28 | 5f 49 6e 69 74 47 72 61 |Address(|_InitGra|
|00004c10| 66 2c 20 54 6f 6f 6c 54 | 72 61 70 29 20 3d 3d 20 |f, ToolT|rap) == |
|00004c20| 4e 47 65 74 54 72 61 70 | 41 64 64 72 65 73 73 28 |NGetTrap|Address(|
|00004c30| 30 78 41 41 36 45 2c 54 | 6f 6f 6c 54 72 61 70 29 |0xAA6E,T|oolTrap)|
|00004c40| 29 0d 09 09 72 65 74 75 | 72 6e 20 30 78 30 32 30 |)...retu|rn 0x020|
|00004c50| 30 3b 0d 09 65 6c 73 65 | 0d 09 09 72 65 74 75 72 |0;..else|...retur|
|00004c60| 6e 20 30 78 30 34 30 30 | 3b 0d 7d 0d 0d 0d 54 72 |n 0x0400|;.}...Tr|
|00004c70| 61 70 54 79 70 65 20 47 | 65 74 54 72 61 70 54 79 |apType G|etTrapTy|
|00004c80| 00 00 00 14 00 00 14 af | ff ff 00 00 00 00 00 00 |........|........|
|00004c90| 22 41 ff ff 00 00 00 00 | 00 00 01 52 00 0b 00 16 |"A......|...R....|
|00004ca0| 00 00 35 ed 01 95 00 e8 | 0d bc 00 00 07 66 72 61 |..5.....|.....fra|
|00004cb0| 6d 65 73 20 00 16 00 00 | 35 ed 01 95 00 e8 0d ac |mes ....|5.......|
|00004cc0| 00 00 07 73 2a 31 30 30 | 30 2e 00 1c 00 00 35 ed |...s*100|0.....5.|
|00004cd0| 01 95 00 e8 0d 90 00 00 | 0d 6d 69 73 73 69 6e 67 |........|.missing|
|00004ce0| 46 72 61 6d 65 73 00 18 | 00 00 35 ed 01 95 00 e8 |Frames..|..5.....|
|00004cf0| 0d 80 00 00 09 66 72 61 | 6d 65 52 61 74 65 00 30 |.....fra|meRate.0|
|00004d00| 00 00 35 ed 01 95 00 e8 | 0d 70 80 00 01 33 03 f1 |..5.....|.p...3..|
|00004d10| 01 dc 04 c6 94 20 00 00 | 00 00 00 00 11 28 2a 63 |..... ..|.....(*c|
|00004d20| 61 72 64 29 2e 64 65 70 | 74 68 5b 33 5d 20 00 1c |ard).dep|th[3] ..|
|00004d30| 00 00 35 ed 01 95 00 e8 | 0c f0 00 00 0d 28 2a 63 |..5.....|.....(*c|
|00004d40| 61 72 64 29 2e 64 65 70 | 74 68 00 30 00 00 35 ed |ard).dep|th.0..5.|
|00004d50| 01 95 00 e8 0c e0 80 00 | 01 07 02 b9 01 dc 03 b7 |........|........|
|00004d60| 94 20 00 00 00 00 00 03 | 00 01 00 02 00 04 00 40 |. ......|.......@|
|00004d70| 00 0a 00 02 05 2a 63 61 | 72 64 00 14 00 00 35 ed |.....*ca|rd....5.|
|00004d80| 01 95 00 e8 0c 44 00 00 | 05 63 61 72 64 20 00 30 |.....D..|.card .0|
|00004d90| 00 00 35 ed 01 95 00 e8 | 0c 34 80 00 01 28 02 d5 |..5.....|.4...(..|
|00004da0| 01 dc 03 a5 94 20 00 00 | 00 00 00 00 11 28 2a 63 |..... ..|.....(*c|
|00004db0| 61 72 64 29 2e 64 65 70 | 74 68 5b 30 5d 20 00 16 |ard).dep|th[0] ..|
|00004dc0| 00 00 35 ed 01 95 00 e8 | 0b 50 00 00 07 63 61 72 |..5.....|.P...car|
|00004dd0| 64 2d 3e 6d 00 1a 00 00 | 35 ed 01 95 00 e8 0b 20 |d->m....|5...... |
|00004de0| 10 02 0b 63 61 72 64 2d | 3e 6d 6f 64 65 20 00 00 |...card-|>mode ..|
|00004df0| 00 14 00 00 16 a7 00 9c | 00 00 00 00 00 00 10 60 |........|.......`|
|00004e00| 00 65 00 00 00 00 00 00 | 02 02 00 11 00 18 00 00 |.e......|........|
|00004e10| 0f d2 00 60 00 55 88 7c | 00 00 09 63 6c 75 74 53 |...`.U.||...clutS|
|00004e20| 69 7a 65 20 00 18 00 00 | 13 e4 00 87 00 55 88 6c |ize ....|.....U.l|
|00004e30| 00 00 09 74 61 62 6c 65 | 53 69 7a 65 00 1e 00 00 |...table|Size....|
|00004e40| 13 7d 00 83 00 55 87 e4 | 00 00 0f 28 2a 70 75 74 |.}...U..|...(*put|
|00004e50| 54 61 62 6c 65 29 2e 72 | 67 62 00 18 00 00 13 7d |Table).r|gb.....}|
|00004e60| 00 83 00 55 88 88 00 00 | 09 2a 70 75 74 54 61 62 |...U....|.*putTab|
|00004e70| 6c 65 00 18 00 00 13 7d | 00 83 00 55 88 84 00 00 |le.....}|...U....|
|00004e80| 09 70 75 74 54 61 62 6c | 65 20 00 2e 00 00 14 3c |.putTabl|e .....<|
|00004e90| 00 89 00 55 88 a8 80 00 | 00 89 01 c5 00 f0 02 7b |...U....|.......{|
|00004ea0| 94 20 00 00 00 00 00 00 | 0f 70 75 74 54 61 62 6c |. ......|.putTabl|
|00004eb0| 65 5b 31 5d 2e 72 67 62 | 00 1e 00 00 13 7d 00 83 |e[1].rgb|.....}..|
|00004ec0| 00 55 87 a8 00 00 0f 67 | 65 74 54 61 62 6c 65 5b |.U.....g|etTable[|
|00004ed0| 31 5d 2e 72 67 62 00 18 | 00 00 13 7d 00 83 00 55 |1].rgb..|...}...U|
|00004ee0| 87 ac 00 00 09 2a 67 65 | 74 54 61 62 6c 65 00 18 |.....*ge|tTable..|
|00004ef0| 00 00 13 7d 00 83 00 55 | 87 a4 00 00 09 67 65 74 |...}...U|.....get|
|00004f00| 54 61 62 6c 65 20 00 18 | 00 00 14 83 00 8b 00 55 |Table ..|.......U|
|00004f10| 88 5c 00 00 09 74 61 62 | 6c 65 53 69 7a 65 00 18 |.\...tab|leSize..|
|00004f20| 00 00 14 f4 00 90 00 55 | 85 94 10 02 09 70 75 74 |.......U|.....put|
|00004f30| 53 75 6d 5b 30 5d 00 26 | 00 00 14 f4 00 90 00 55 |Sum[0].&|.......U|
|00004f40| 86 f8 40 00 00 b1 01 cd | 01 4f 02 87 94 20 00 00 |..@.....|.O... ..|
|00004f50| 00 00 00 02 07 70 75 74 | 53 75 6d 20 00 16 00 00 |.....put|Sum ....|
|00004f60| 15 0e 00 92 00 55 86 b4 | 00 00 07 67 65 74 53 75 |.....U..|...getSu|
|00004f70| 6d 20 00 30 00 00 15 d0 | 00 98 00 55 86 60 40 00 |m .0....|...U.`@.|
|00004f80| 00 d6 00 2d 01 b6 00 e6 | 94 20 00 00 00 00 00 80 |...-....|. ......|
|00004f90| 11 63 6c 75 74 2d 3e 72 | 67 62 47 61 69 6e 5b 30 |.clut->r|gbGain[0|
|00004fa0| 5d 20 00 2c 00 00 15 d0 | 00 98 00 55 86 f4 40 00 |] .,....|...U..@.|
|00004fb0| 00 9d 01 c9 01 7d 02 82 | 94 20 00 00 00 00 00 10 |.....}..|. ......|
|00004fc0| 0d 63 6c 75 74 2d 3e 72 | 67 62 47 61 69 6e 00 28 |.clut->r|gbGain.(|
|00004fd0| 00 00 15 d0 00 98 00 55 | 85 24 40 00 00 d6 01 00 |.......U|.$@.....|
|00004fe0| 01 b6 01 b9 94 20 00 00 | 00 00 00 02 09 67 65 74 |..... ..|.....get|
|00004ff0| 53 75 6d 5b 30 5d 00 16 | 00 00 15 d0 00 98 00 55 |Sum[0]..|.......U|
|00005000| 85 b0 00 00 07 67 65 74 | 53 75 6d 20 00 00 00 04 |.....get|Sum ....|
|00005010| 00 01 00 01 00 00 00 48 | 00 09 4d 6f 6e 61 63 6f |.......H|..Monaco|
|00005020| 00 00 00 00 01 9b 8a d0 | 00 00 00 00 00 00 00 00 |........|........|
|00005030| 00 00 00 00 00 00 00 00 | 00 00 00 06 00 04 00 57 |........|.......W|
|00005040| 00 04 02 73 02 c2 00 57 | 00 04 02 73 02 c2 ad 7e |...s...W|...s...~|
|00005050| 28 f3 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |(.......|........|
|00005060| 00 00 01 26 00 0c 00 00 | 1a 83 00 00 1a 96 13 43 |...&....|.......C|
|00005070| 6f 6d 70 75 74 65 52 4d | 53 43 6c 75 74 45 72 72 |omputeRM|SClutErr|
|00005080| 6f 72 00 00 12 e3 00 00 | 12 f8 15 45 73 74 69 6d |or......|...Estim|
|00005090| 61 74 65 43 6c 75 74 54 | 72 61 6e 73 66 6f 72 6d |ateClutT|ransform|
|000050a0| 00 00 41 16 00 00 41 2c | 17 47 44 52 65 73 74 6f |..A...A,|.GDResto|
|000050b0| 72 65 42 6c 61 63 6b 41 | 6e 64 57 68 69 74 65 00 |reBlackA|ndWhite.|
|000050c0| 00 00 0c a1 00 00 0c ab | 0b 47 44 54 65 73 74 43 |........|.GDTestC|
|000050d0| 6c 75 74 00 00 00 39 99 | 00 00 39 a7 0f 47 44 54 |lut...9.|..9..GDT|
|000050e0| 65 73 74 43 6c 75 74 48 | 61 73 68 00 00 00 29 88 |estClutH|ash...).|
|000050f0| 00 00 29 9a 13 47 44 54 | 65 73 74 43 6c 75 74 56 |..)..GDT|estClutV|
|00005100| 69 73 75 61 6c 6c 79 00 | 00 00 31 bd 00 00 31 ca |isually.|..1...1.|
|00005110| 0d 4d 61 6b 65 43 6c 75 | 74 54 61 62 6c 65 00 00 |.MakeClu|tTable..|
|00005120| 47 7b 00 00 47 84 09 52 | 47 42 54 6f 47 72 61 79 |G{..G..R|GBToGray|
|00005130| 00 00 43 3c 00 00 43 4c | 11 55 6e 65 71 75 61 6c |..C<..CL|.Unequal|
|00005140| 43 6c 75 74 45 6e 74 72 | 79 00 00 00 3b e2 00 00 |ClutEntr|y...;...|
|00005150| 3b ed 0b 56 69 73 69 62 | 6c 65 48 61 73 68 00 00 |;..Visib|leHash..|
|00005160| 17 3f 00 00 17 4f 11 57 | 72 69 74 65 41 6e 64 52 |.?...O.W|riteAndR|
|00005170| 65 61 64 43 6c 75 74 00 | 00 00 36 b3 00 00 36 bc |eadClut.|..6...6.|
|00005180| 09 57 72 69 74 65 43 6c | 75 74 00 00 00 1e 00 57 |.WriteCl|ut.....W|
|00005190| 00 04 02 73 02 c2 00 57 | 00 04 02 73 02 c2 00 00 |...s...W|...s....|
|000051a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 01 00 |........|........|
|000051b0| 00 00 06 2c 00 00 05 2c | 00 00 00 9e 01 8e e8 c8 |...,...,|........|
|000051c0| 3e cc 00 00 00 1c 00 9e | 00 03 42 4b 50 54 00 01 |>.......|..BKPT..|
|000051d0| 00 22 44 54 56 55 00 01 | 00 3a 4d 50 53 52 00 02 |."DTVU..|.:MPSR..|
|000051e0| 00 52 4d 57 42 42 00 00 | 00 76 34 1c ff ff 00 00 |.RMWBB..|.v4.....|
|000051f0| 00 00 00 00 00 00 44 b3 | ff ff 00 00 01 6e 00 00 |......D.|.....n..|
|00005200| 00 00 62 7e ff ff 00 00 | 00 18 00 00 00 00 0f 1f |..b~....|........|
|00005210| ff ff 00 00 01 86 00 00 | 00 00 03 ed ff ff 00 00 |........|........|
|00005220| 03 94 00 00 00 00 03 ef | ff ff 00 00 03 e0 00 00 |........|........|
|00005230| 00 00 03 f0 ff ff 00 00 | 05 0a 01 91 44 18 03 f0 |........|....D...|
|00005240| ff ff 00 00 03 8c 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005250| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005260| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005270| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+