home *** CD-ROM | disk | FTP | other *** search
view JSON data
|
view as text
|
open on a Mac
|
open on a PC
This file was processed as: SHell self-extracting ARchive
(archive/shar).
You can browse this item here: part18
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| ASCII text
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 4e 65 77 73 67 72 6f 75 | 70 73 3a 20 63 6f 6d 70 |Newsgrou|ps: comp|
|00000010| 2e 73 6f 75 72 63 65 73 | 2e 78 0a 46 72 6f 6d 3a |.sources|.x.From:|
|00000020| 20 65 6e 76 62 76 73 40 | 65 70 62 39 2e 6c 62 6c | envbvs@|epb9.lbl|
|00000030| 2e 67 6f 76 20 28 42 72 | 69 61 6e 20 56 2e 20 53 |.gov (Br|ian V. S|
|00000040| 6d 69 74 68 29 0a 53 75 | 62 6a 65 63 74 3a 20 76 |mith).Su|bject: v|
|00000050| 31 39 69 31 33 30 3a 20 | 20 78 66 69 67 20 2d 20 |19i130: | xfig - |
|00000060| 44 72 61 77 20 61 6d 64 | 20 6d 61 6e 69 70 75 6c |Draw amd| manipul|
|00000070| 61 74 65 20 6f 62 6a 65 | 63 74 73 20 69 6e 20 61 |ate obje|cts in a|
|00000080| 6e 20 58 2d 57 69 6e 64 | 6f 77 2c 20 50 61 72 74 |n X-Wind|ow, Part|
|00000090| 31 38 2f 32 37 0a 4d 65 | 73 73 61 67 65 2d 49 44 |18/27.Me|ssage-ID|
|000000a0| 3a 20 3c 31 39 39 33 4d | 61 79 32 31 2e 30 32 31 |: <1993M|ay21.021|
|000000b0| 36 33 36 2e 36 39 34 38 | 40 73 70 61 72 6b 79 2e |636.6948|@sparky.|
|000000c0| 69 6d 64 2e 73 74 65 72 | 6c 69 6e 67 2e 63 6f 6d |imd.ster|ling.com|
|000000d0| 3e 0a 58 2d 4d 64 34 2d | 53 69 67 6e 61 74 75 72 |>.X-Md4-|Signatur|
|000000e0| 65 3a 20 66 37 32 31 30 | 62 65 36 61 39 34 37 33 |e: f7210|be6a9473|
|000000f0| 31 33 63 61 34 30 38 31 | 62 36 38 32 62 66 30 37 |13ca4081|b682bf07|
|00000100| 34 63 37 0a 53 65 6e 64 | 65 72 3a 20 63 68 72 69 |4c7.Send|er: chri|
|00000110| 73 40 73 70 61 72 6b 79 | 2e 69 6d 64 2e 73 74 65 |s@sparky|.imd.ste|
|00000120| 72 6c 69 6e 67 2e 63 6f | 6d 20 28 43 68 72 69 73 |rling.co|m (Chris|
|00000130| 20 4f 6c 73 6f 6e 29 0a | 4f 72 67 61 6e 69 7a 61 | Olson).|Organiza|
|00000140| 74 69 6f 6e 3a 20 53 74 | 65 72 6c 69 6e 67 20 53 |tion: St|erling S|
|00000150| 6f 66 74 77 61 72 65 0a | 44 61 74 65 3a 20 46 72 |oftware.|Date: Fr|
|00000160| 69 2c 20 32 31 20 4d 61 | 79 20 31 39 39 33 20 30 |i, 21 Ma|y 1993 0|
|00000170| 32 3a 31 36 3a 33 36 20 | 47 4d 54 0a 41 70 70 72 |2:16:36 |GMT.Appr|
|00000180| 6f 76 65 64 3a 20 63 68 | 72 69 73 40 73 70 61 72 |oved: ch|ris@spar|
|00000190| 6b 79 2e 69 6d 64 2e 73 | 74 65 72 6c 69 6e 67 2e |ky.imd.s|terling.|
|000001a0| 63 6f 6d 0a 0a 53 75 62 | 6d 69 74 74 65 64 2d 62 |com..Sub|mitted-b|
|000001b0| 79 3a 20 65 6e 76 62 76 | 73 40 65 70 62 39 2e 6c |y: envbv|s@epb9.l|
|000001c0| 62 6c 2e 67 6f 76 20 28 | 42 72 69 61 6e 20 56 2e |bl.gov (|Brian V.|
|000001d0| 20 53 6d 69 74 68 29 0a | 50 6f 73 74 69 6e 67 2d | Smith).|Posting-|
|000001e0| 6e 75 6d 62 65 72 3a 20 | 56 6f 6c 75 6d 65 20 31 |number: |Volume 1|
|000001f0| 39 2c 20 49 73 73 75 65 | 20 31 33 30 0a 41 72 63 |9, Issue| 130.Arc|
|00000200| 68 69 76 65 2d 6e 61 6d | 65 3a 20 78 66 69 67 2f |hive-nam|e: xfig/|
|00000210| 70 61 72 74 31 38 0a 45 | 6e 76 69 72 6f 6e 6d 65 |part18.E|nvironme|
|00000220| 6e 74 3a 20 58 31 31 0a | 53 75 70 65 72 73 65 64 |nt: X11.|Supersed|
|00000230| 65 73 3a 20 78 66 69 67 | 3a 20 56 6f 6c 75 6d 65 |es: xfig|: Volume|
|00000240| 20 31 36 2c 20 49 73 73 | 75 65 20 36 2d 33 30 2c | 16, Iss|ue 6-30,|
|00000250| 33 39 0a 0a 23 21 20 2f | 62 69 6e 2f 73 68 0a 23 |39..#! /|bin/sh.#|
|00000260| 20 54 68 69 73 20 69 73 | 20 61 20 73 68 65 6c 6c | This is| a shell|
|00000270| 20 61 72 63 68 69 76 65 | 2e 20 20 52 65 6d 6f 76 | archive|. Remov|
|00000280| 65 20 61 6e 79 74 68 69 | 6e 67 20 62 65 66 6f 72 |e anythi|ng befor|
|00000290| 65 20 74 68 69 73 20 6c | 69 6e 65 2c 20 74 68 65 |e this l|ine, the|
|000002a0| 6e 20 75 6e 70 61 63 6b | 0a 23 20 69 74 20 62 79 |n unpack|.# it by|
|000002b0| 20 73 61 76 69 6e 67 20 | 69 74 20 69 6e 74 6f 20 | saving |it into |
|000002c0| 61 20 66 69 6c 65 20 61 | 6e 64 20 74 79 70 69 6e |a file a|nd typin|
|000002d0| 67 20 22 73 68 20 66 69 | 6c 65 22 2e 20 20 54 6f |g "sh fi|le". To|
|000002e0| 20 6f 76 65 72 77 72 69 | 74 65 20 65 78 69 73 74 | overwri|te exist|
|000002f0| 69 6e 67 0a 23 20 66 69 | 6c 65 73 2c 20 74 79 70 |ing.# fi|les, typ|
|00000300| 65 20 22 73 68 20 66 69 | 6c 65 20 2d 63 22 2e 20 |e "sh fi|le -c". |
|00000310| 20 59 6f 75 20 63 61 6e | 20 61 6c 73 6f 20 66 65 | You can| also fe|
|00000320| 65 64 20 74 68 69 73 20 | 61 73 20 73 74 61 6e 64 |ed this |as stand|
|00000330| 61 72 64 20 69 6e 70 75 | 74 20 76 69 61 0a 23 20 |ard inpu|t via.# |
|00000340| 75 6e 73 68 61 72 2c 20 | 6f 72 20 62 79 20 74 79 |unshar, |or by ty|
|00000350| 70 69 6e 67 20 22 73 68 | 20 3c 66 69 6c 65 22 2c |ping "sh| <file",|
|00000360| 20 65 2e 67 2e 2e 20 20 | 49 66 20 74 68 69 73 20 | e.g.. |If this |
|00000370| 61 72 63 68 69 76 65 20 | 69 73 20 63 6f 6d 70 6c |archive |is compl|
|00000380| 65 74 65 2c 20 79 6f 75 | 0a 23 20 77 69 6c 6c 20 |ete, you|.# will |
|00000390| 73 65 65 20 74 68 65 20 | 66 6f 6c 6c 6f 77 69 6e |see the |followin|
|000003a0| 67 20 6d 65 73 73 61 67 | 65 20 61 74 20 74 68 65 |g messag|e at the|
|000003b0| 20 65 6e 64 3a 0a 23 09 | 09 22 45 6e 64 20 6f 66 | end:.#.|."End of|
|000003c0| 20 61 72 63 68 69 76 65 | 20 31 38 20 28 6f 66 20 | archive| 18 (of |
|000003d0| 32 37 29 2e 22 0a 23 20 | 43 6f 6e 74 65 6e 74 73 |27).".# |Contents|
|000003e0| 3a 20 20 75 5f 64 72 61 | 77 2e 63 20 77 5f 72 75 |: u_dra|w.c w_ru|
|000003f0| 6c 65 72 73 2e 63 0a 23 | 20 57 72 61 70 70 65 64 |lers.c.#| Wrapped|
|00000400| 20 62 79 20 65 6e 76 62 | 76 73 40 65 70 62 39 2e | by envb|vs@epb9.|
|00000410| 6c 62 6c 2e 67 6f 76 2e | 6c 62 6c 2e 67 6f 76 20 |lbl.gov.|lbl.gov |
|00000420| 6f 6e 20 4d 6f 6e 20 4d | 61 79 20 20 33 20 31 32 |on Mon M|ay 3 12|
|00000430| 3a 30 36 3a 30 32 20 31 | 39 39 33 0a 50 41 54 48 |:06:02 1|993.PATH|
|00000440| 3d 2f 62 69 6e 3a 2f 75 | 73 72 2f 62 69 6e 3a 2f |=/bin:/u|sr/bin:/|
|00000450| 75 73 72 2f 75 63 62 20 | 3b 20 65 78 70 6f 72 74 |usr/ucb |; export|
|00000460| 20 50 41 54 48 0a 69 66 | 20 74 65 73 74 20 2d 66 | PATH.if| test -f|
|00000470| 20 27 75 5f 64 72 61 77 | 2e 63 27 20 2d 61 20 22 | 'u_draw|.c' -a "|
|00000480| 24 7b 31 7d 22 20 21 3d | 20 22 2d 63 22 20 3b 20 |${1}" !=| "-c" ; |
|00000490| 74 68 65 6e 20 0a 20 20 | 65 63 68 6f 20 73 68 61 |then . |echo sha|
|000004a0| 72 3a 20 57 69 6c 6c 20 | 6e 6f 74 20 63 6c 6f 62 |r: Will |not clob|
|000004b0| 62 65 72 20 65 78 69 73 | 74 69 6e 67 20 66 69 6c |ber exis|ting fil|
|000004c0| 65 20 5c 22 27 75 5f 64 | 72 61 77 2e 63 27 5c 22 |e \"'u_d|raw.c'\"|
|000004d0| 0a 65 6c 73 65 0a 65 63 | 68 6f 20 73 68 61 72 3a |.else.ec|ho shar:|
|000004e0| 20 45 78 74 72 61 63 74 | 69 6e 67 20 5c 22 27 75 | Extract|ing \"'u|
|000004f0| 5f 64 72 61 77 2e 63 27 | 5c 22 20 5c 28 33 34 31 |_draw.c'|\" \(341|
|00000500| 37 30 20 63 68 61 72 61 | 63 74 65 72 73 5c 29 0a |70 chara|cters\).|
|00000510| 73 65 64 20 22 73 2f 5e | 58 2f 2f 22 20 3e 27 75 |sed "s/^|X//" >'u|
|00000520| 5f 64 72 61 77 2e 63 27 | 20 3c 3c 27 45 4e 44 5f |_draw.c'| <<'END_|
|00000530| 4f 46 5f 46 49 4c 45 27 | 0a 58 2f 2a 0a 58 20 2a |OF_FILE'|.X/*.X *|
|00000540| 20 46 49 47 20 3a 20 46 | 61 63 69 6c 69 74 79 20 | FIG : F|acility |
|00000550| 66 6f 72 20 49 6e 74 65 | 72 61 63 74 69 76 65 20 |for Inte|ractive |
|00000560| 47 65 6e 65 72 61 74 69 | 6f 6e 20 6f 66 20 66 69 |Generati|on of fi|
|00000570| 67 75 72 65 73 0a 58 20 | 2a 20 43 6f 70 79 72 69 |gures.X |* Copyri|
|00000580| 67 68 74 20 28 63 29 20 | 31 39 38 35 20 62 79 20 |ght (c) |1985 by |
|00000590| 53 75 70 6f 6a 20 53 75 | 74 61 6e 74 68 61 76 69 |Supoj Su|tanthavi|
|000005a0| 62 75 6c 0a 58 20 2a 20 | 43 6f 70 79 72 69 67 68 |bul.X * |Copyrigh|
|000005b0| 74 20 28 63 29 20 31 39 | 39 30 20 62 79 20 42 72 |t (c) 19|90 by Br|
|000005c0| 69 61 6e 20 56 2e 20 53 | 6d 69 74 68 0a 58 20 2a |ian V. S|mith.X *|
|000005d0| 20 43 6f 70 79 72 69 67 | 68 74 20 28 63 29 20 31 | Copyrig|ht (c) 1|
|000005e0| 39 39 32 20 62 79 20 4a | 61 6d 65 73 20 54 6f 75 |992 by J|ames Tou|
|000005f0| 67 68 0a 58 20 2a 0a 58 | 20 2a 20 22 50 65 72 6d |gh.X *.X| * "Perm|
|00000600| 69 73 73 69 6f 6e 20 74 | 6f 20 75 73 65 2c 20 63 |ission t|o use, c|
|00000610| 6f 70 79 2c 20 6d 6f 64 | 69 66 79 2c 20 64 69 73 |opy, mod|ify, dis|
|00000620| 74 72 69 62 75 74 65 2c | 20 61 6e 64 20 73 65 6c |tribute,| and sel|
|00000630| 6c 20 74 68 69 73 20 73 | 6f 66 74 77 61 72 65 20 |l this s|oftware |
|00000640| 61 6e 64 20 69 74 73 0a | 58 20 2a 20 64 6f 63 75 |and its.|X * docu|
|00000650| 6d 65 6e 74 61 74 69 6f | 6e 20 66 6f 72 20 61 6e |mentatio|n for an|
|00000660| 79 20 70 75 72 70 6f 73 | 65 20 69 73 20 68 65 72 |y purpos|e is her|
|00000670| 65 62 79 20 67 72 61 6e | 74 65 64 20 77 69 74 68 |eby gran|ted with|
|00000680| 6f 75 74 20 66 65 65 2c | 20 70 72 6f 76 69 64 65 |out fee,| provide|
|00000690| 64 20 74 68 61 74 0a 58 | 20 2a 20 74 68 65 20 61 |d that.X| * the a|
|000006a0| 62 6f 76 65 20 63 6f 70 | 79 72 69 67 68 74 20 6e |bove cop|yright n|
|000006b0| 6f 74 69 63 65 20 61 70 | 70 65 61 72 20 69 6e 20 |otice ap|pear in |
|000006c0| 61 6c 6c 20 63 6f 70 69 | 65 73 20 61 6e 64 20 74 |all copi|es and t|
|000006d0| 68 61 74 20 62 6f 74 68 | 20 74 68 65 20 63 6f 70 |hat both| the cop|
|000006e0| 79 72 69 67 68 74 0a 58 | 20 2a 20 6e 6f 74 69 63 |yright.X| * notic|
|000006f0| 65 20 61 6e 64 20 74 68 | 69 73 20 70 65 72 6d 69 |e and th|is permi|
|00000700| 73 73 69 6f 6e 20 6e 6f | 74 69 63 65 20 61 70 70 |ssion no|tice app|
|00000710| 65 61 72 20 69 6e 20 73 | 75 70 70 6f 72 74 69 6e |ear in s|upportin|
|00000720| 67 20 64 6f 63 75 6d 65 | 6e 74 61 74 69 6f 6e 2e |g docume|ntation.|
|00000730| 20 0a 58 20 2a 20 4e 6f | 20 72 65 70 72 65 73 65 | .X * No| represe|
|00000740| 6e 74 61 74 69 6f 6e 73 | 20 61 72 65 20 6d 61 64 |ntations| are mad|
|00000750| 65 20 61 62 6f 75 74 20 | 74 68 65 20 73 75 69 74 |e about |the suit|
|00000760| 61 62 69 6c 69 74 79 20 | 6f 66 20 74 68 69 73 20 |ability |of this |
|00000770| 73 6f 66 74 77 61 72 65 | 20 66 6f 72 20 0a 58 20 |software| for .X |
|00000780| 2a 20 61 6e 79 20 70 75 | 72 70 6f 73 65 2e 20 20 |* any pu|rpose. |
|00000790| 49 74 20 69 73 20 70 72 | 6f 76 69 64 65 64 20 22 |It is pr|ovided "|
|000007a0| 61 73 20 69 73 22 20 77 | 69 74 68 6f 75 74 20 65 |as is" w|ithout e|
|000007b0| 78 70 72 65 73 73 20 6f | 72 20 69 6d 70 6c 69 65 |xpress o|r implie|
|000007c0| 64 20 77 61 72 72 61 6e | 74 79 2e 22 0a 58 20 2a |d warran|ty.".X *|
|000007d0| 2f 0a 58 0a 58 23 69 6e | 63 6c 75 64 65 20 22 66 |/.X.X#in|clude "f|
|000007e0| 69 67 2e 68 22 0a 58 23 | 69 6e 63 6c 75 64 65 20 |ig.h".X#|include |
|000007f0| 22 72 65 73 6f 75 72 63 | 65 73 2e 68 22 0a 58 23 |"resourc|es.h".X#|
|00000800| 69 6e 63 6c 75 64 65 20 | 22 6f 62 6a 65 63 74 2e |include |"object.|
|00000810| 68 22 0a 58 23 69 6e 63 | 6c 75 64 65 20 22 70 61 |h".X#inc|lude "pa|
|00000820| 69 6e 74 6f 70 2e 68 22 | 0a 58 23 69 6e 63 6c 75 |intop.h"|.X#inclu|
|00000830| 64 65 20 22 75 5f 62 6f | 75 6e 64 2e 68 22 0a 58 |de "u_bo|und.h".X|
|00000840| 23 69 6e 63 6c 75 64 65 | 20 22 75 5f 63 72 65 61 |#include| "u_crea|
|00000850| 74 65 2e 68 22 0a 58 23 | 69 6e 63 6c 75 64 65 20 |te.h".X#|include |
|00000860| 22 75 5f 64 72 61 77 2e | 68 22 0a 58 23 69 6e 63 |"u_draw.|h".X#inc|
|00000870| 6c 75 64 65 20 22 77 5f | 63 61 6e 76 61 73 2e 68 |lude "w_|canvas.h|
|00000880| 22 0a 58 23 69 6e 63 6c | 75 64 65 20 22 77 5f 64 |".X#incl|ude "w_d|
|00000890| 72 61 77 70 72 69 6d 2e | 68 22 0a 58 23 69 6e 63 |rawprim.|h".X#inc|
|000008a0| 6c 75 64 65 20 22 77 5f | 7a 6f 6f 6d 2e 68 22 0a |lude "w_|zoom.h".|
|000008b0| 58 0a 58 74 79 70 65 64 | 65 66 20 75 6e 73 69 67 |X.Xtyped|ef unsig|
|000008c0| 6e 65 64 20 63 68 61 72 | 20 62 79 74 65 3b 0a 58 |ned char| byte;.X|
|000008d0| 65 78 74 65 72 6e 20 50 | 49 58 5f 52 4f 54 5f 46 |extern P|IX_ROT_F|
|000008e0| 4f 4e 54 20 6c 6f 6f 6b | 66 6f 6e 74 28 29 3b 0a |ONT look|font();.|
|000008f0| 58 0a 58 2f 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X.X/****|********|
|00000900| 2a 2a 20 50 4f 4c 59 47 | 4f 4e 2f 43 55 52 56 45 |** POLYG|ON/CURVE|
|00000910| 20 44 52 41 57 49 4e 47 | 20 46 41 43 49 4c 49 54 | DRAWING| FACILIT|
|00000920| 49 45 53 20 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |IES ****|********|
|00000930| 2a 2a 2a 2a 2f 0a 58 0a | 58 73 74 61 74 69 63 20 |****/.X.|Xstatic |
|00000940| 69 6e 74 09 6e 70 6f 69 | 6e 74 73 3b 0a 58 73 74 |int.npoi|nts;.Xst|
|00000950| 61 74 69 63 20 69 6e 74 | 09 6d 61 78 5f 70 6f 69 |atic int|.max_poi|
|00000960| 6e 74 73 3b 0a 58 73 74 | 61 74 69 63 20 58 50 6f |nts;.Xst|atic XPo|
|00000970| 69 6e 74 20 20 2a 70 6f | 69 6e 74 73 3b 0a 58 73 |int *po|ints;.Xs|
|00000980| 74 61 74 69 63 20 69 6e | 74 09 61 6c 6c 6f 63 73 |tatic in|t.allocs|
|00000990| 74 65 70 3b 0a 58 0a 58 | 73 74 61 74 69 63 09 09 |tep;.X.X|static..|
|000009a0| 42 6f 6f 6c 65 61 6e 0a | 58 69 6e 69 74 5f 70 6f |Boolean.|Xinit_po|
|000009b0| 69 6e 74 5f 61 72 72 61 | 79 28 69 6e 69 74 5f 73 |int_arra|y(init_s|
|000009c0| 69 7a 65 2c 20 73 74 65 | 70 5f 73 69 7a 65 29 0a |ize, ste|p_size).|
|000009d0| 58 20 20 20 20 69 6e 74 | 09 09 20 20 20 20 69 6e |X int|.. in|
|000009e0| 69 74 5f 73 69 7a 65 2c | 20 73 74 65 70 5f 73 69 |it_size,| step_si|
|000009f0| 7a 65 3b 0a 58 7b 0a 58 | 20 20 20 20 6e 70 6f 69 |ze;.X{.X| npoi|
|00000a00| 6e 74 73 20 3d 20 30 3b | 0a 58 20 20 20 20 6d 61 |nts = 0;|.X ma|
|00000a10| 78 5f 70 6f 69 6e 74 73 | 20 3d 20 69 6e 69 74 5f |x_points| = init_|
|00000a20| 73 69 7a 65 3b 0a 58 20 | 20 20 20 61 6c 6c 6f 63 |size;.X | alloc|
|00000a30| 73 74 65 70 20 3d 20 73 | 74 65 70 5f 73 69 7a 65 |step = s|tep_size|
|00000a40| 3b 0a 58 20 20 20 20 69 | 66 20 28 6d 61 78 5f 70 |;.X i|f (max_p|
|00000a50| 6f 69 6e 74 73 20 3e 20 | 4d 41 58 4e 55 4d 50 54 |oints > |MAXNUMPT|
|00000a60| 53 29 20 7b 0a 58 09 70 | 75 74 5f 6d 73 67 28 22 |S) {.X.p|ut_msg("|
|00000a70| 54 6f 6f 20 6d 61 6e 79 | 20 70 6f 69 6e 74 73 2c |Too many| points,|
|00000a80| 20 72 65 63 6f 6d 70 69 | 6c 65 20 77 69 74 68 20 | recompi|le with |
|00000a90| 4d 41 58 4e 55 4d 50 54 | 53 20 3e 20 25 64 20 69 |MAXNUMPT|S > %d i|
|00000aa0| 6e 20 77 5f 64 72 61 77 | 70 72 69 6d 2e 68 22 2c |n w_draw|prim.h",|
|00000ab0| 0a 58 09 09 4d 41 58 4e | 55 4d 50 54 53 29 3b 0a |.X..MAXN|UMPTS);.|
|00000ac0| 58 09 6d 61 78 5f 70 6f | 69 6e 74 73 20 3d 20 4d |X.max_po|ints = M|
|00000ad0| 41 58 4e 55 4d 50 54 53 | 3b 0a 58 20 20 20 20 7d |AXNUMPTS|;.X }|
|00000ae0| 0a 58 20 20 20 20 69 66 | 20 28 28 70 6f 69 6e 74 |.X if| ((point|
|00000af0| 73 20 3d 20 28 58 50 6f | 69 6e 74 20 2a 29 20 6d |s = (XPo|int *) m|
|00000b00| 61 6c 6c 6f 63 28 6d 61 | 78 5f 70 6f 69 6e 74 73 |alloc(ma|x_points|
|00000b10| 20 2a 20 73 69 7a 65 6f | 66 28 58 50 6f 69 6e 74 | * sizeo|f(XPoint|
|00000b20| 29 29 29 20 3d 3d 20 30 | 29 20 7b 0a 58 09 66 70 |))) == 0|) {.X.fp|
|00000b30| 72 69 6e 74 66 28 73 74 | 64 65 72 72 2c 20 22 78 |rintf(st|derr, "x|
|00000b40| 66 69 67 3a 20 69 6e 73 | 75 66 66 69 63 69 65 6e |fig: ins|ufficien|
|00000b50| 74 20 6d 65 6d 6f 72 79 | 20 74 6f 20 61 6c 6c 6f |t memory| to allo|
|00000b60| 63 61 74 65 20 70 6f 69 | 6e 74 20 61 72 72 61 79 |cate poi|nt array|
|00000b70| 5c 6e 22 29 3b 0a 58 09 | 72 65 74 75 72 6e 20 46 |\n");.X.|return F|
|00000b80| 61 6c 73 65 3b 0a 58 20 | 20 20 20 7d 0a 58 20 20 |alse;.X | }.X |
|00000b90| 20 20 72 65 74 75 72 6e | 20 54 72 75 65 3b 0a 58 | return| True;.X|
|00000ba0| 7d 0a 58 0a 58 73 74 61 | 74 69 63 09 09 42 6f 6f |}.X.Xsta|tic..Boo|
|00000bb0| 6c 65 61 6e 0a 58 61 64 | 64 5f 70 6f 69 6e 74 28 |lean.Xad|d_point(|
|00000bc0| 78 2c 20 79 29 0a 58 20 | 20 20 20 69 6e 74 09 09 |x, y).X | int..|
|00000bd0| 20 20 20 20 78 2c 20 79 | 3b 0a 58 7b 0a 58 20 20 | x, y|;.X{.X |
|00000be0| 20 20 69 66 20 28 6e 70 | 6f 69 6e 74 73 20 3e 3d | if (np|oints >=|
|00000bf0| 20 6d 61 78 5f 70 6f 69 | 6e 74 73 29 20 7b 0a 58 | max_poi|nts) {.X|
|00000c00| 09 58 50 6f 69 6e 74 09 | 20 20 20 20 20 20 20 2a |.XPoint.| *|
|00000c10| 74 6d 70 5f 70 3b 0a 58 | 0a 58 09 6d 61 78 5f 70 |tmp_p;.X|.X.max_p|
|00000c20| 6f 69 6e 74 73 20 2b 3d | 20 61 6c 6c 6f 63 73 74 |oints +=| allocst|
|00000c30| 65 70 3b 0a 58 09 69 66 | 20 28 6d 61 78 5f 70 6f |ep;.X.if| (max_po|
|00000c40| 69 6e 74 73 20 3e 3d 20 | 4d 41 58 4e 55 4d 50 54 |ints >= |MAXNUMPT|
|00000c50| 53 29 0a 58 09 20 20 20 | 20 72 65 74 75 72 6e 20 |S).X. | return |
|00000c60| 46 61 6c 73 65 3b 09 2f | 2a 20 73 74 6f 70 3b 20 |False;./|* stop; |
|00000c70| 69 74 20 69 73 20 6e 6f | 74 20 63 6c 6f 73 69 6e |it is no|t closin|
|00000c80| 67 20 2a 2f 0a 58 0a 58 | 09 69 66 20 28 28 74 6d |g */.X.X|.if ((tm|
|00000c90| 70 5f 70 20 3d 20 28 58 | 50 6f 69 6e 74 20 2a 29 |p_p = (X|Point *)|
|00000ca0| 20 72 65 61 6c 6c 6f 63 | 28 70 6f 69 6e 74 73 2c | realloc|(points,|
|00000cb0| 0a 58 09 09 09 09 09 6d | 61 78 5f 70 6f 69 6e 74 |.X.....m|ax_point|
|00000cc0| 73 20 2a 20 73 69 7a 65 | 6f 66 28 58 50 6f 69 6e |s * size|of(XPoin|
|00000cd0| 74 29 29 29 20 3d 3d 20 | 30 29 20 7b 0a 58 09 20 |t))) == |0) {.X. |
|00000ce0| 20 20 20 66 70 72 69 6e | 74 66 28 73 74 64 65 72 | fprin|tf(stder|
|00000cf0| 72 2c 0a 58 09 09 20 20 | 20 20 22 78 66 69 67 3a |r,.X.. | "xfig:|
|00000d00| 20 69 6e 73 75 66 66 69 | 63 69 65 6e 74 20 6d 65 | insuffi|cient me|
|00000d10| 6d 6f 72 79 20 74 6f 20 | 72 65 61 6c 6c 6f 63 61 |mory to |realloca|
|00000d20| 74 65 20 70 6f 69 6e 74 | 20 61 72 72 61 79 5c 6e |te point| array\n|
|00000d30| 22 29 3b 0a 58 09 20 20 | 20 20 72 65 74 75 72 6e |");.X. | return|
|00000d40| 20 46 61 6c 73 65 3b 0a | 58 09 7d 0a 58 09 70 6f | False;.|X.}.X.po|
|00000d50| 69 6e 74 73 20 3d 20 74 | 6d 70 5f 70 3b 0a 58 20 |ints = t|mp_p;.X |
|00000d60| 20 20 20 7d 0a 58 20 20 | 20 20 70 6f 69 6e 74 73 | }.X | points|
|00000d70| 5b 6e 70 6f 69 6e 74 73 | 5d 2e 78 20 3d 20 28 73 |[npoints|].x = (s|
|00000d80| 68 6f 72 74 29 20 78 3b | 0a 58 20 20 20 20 70 6f |hort) x;|.X po|
|00000d90| 69 6e 74 73 5b 6e 70 6f | 69 6e 74 73 5d 2e 79 20 |ints[npo|ints].y |
|00000da0| 3d 20 28 73 68 6f 72 74 | 29 20 79 3b 0a 58 20 20 |= (short|) y;.X |
|00000db0| 20 20 6e 70 6f 69 6e 74 | 73 2b 2b 3b 0a 58 20 20 | npoint|s++;.X |
|00000dc0| 20 20 72 65 74 75 72 6e | 20 54 72 75 65 3b 0a 58 | return| True;.X|
|00000dd0| 7d 0a 58 0a 58 73 74 61 | 74 69 63 20 76 6f 69 64 |}.X.Xsta|tic void|
|00000de0| 0a 58 64 72 61 77 5f 70 | 6f 69 6e 74 5f 61 72 72 |.Xdraw_p|oint_arr|
|00000df0| 61 79 28 77 2c 20 6f 70 | 2c 20 6c 69 6e 65 5f 77 |ay(w, op|, line_w|
|00000e00| 69 64 74 68 2c 20 6c 69 | 6e 65 5f 73 74 79 6c 65 |idth, li|ne_style|
|00000e10| 2c 20 73 74 79 6c 65 5f | 76 61 6c 2c 20 66 69 6c |, style_|val, fil|
|00000e20| 6c 5f 73 74 79 6c 65 2c | 20 63 6f 6c 6f 72 29 0a |l_style,| color).|
|00000e30| 58 20 20 20 20 57 69 6e | 64 6f 77 09 20 20 20 20 |X Win|dow. |
|00000e40| 77 3b 0a 58 20 20 20 20 | 69 6e 74 09 09 20 20 20 |w;.X |int.. |
|00000e50| 20 6f 70 3b 0a 58 20 20 | 20 20 69 6e 74 09 09 20 | op;.X | int.. |
|00000e60| 20 20 20 6c 69 6e 65 5f | 77 69 64 74 68 2c 20 6c | line_|width, l|
|00000e70| 69 6e 65 5f 73 74 79 6c | 65 3b 0a 58 20 20 20 20 |ine_styl|e;.X |
|00000e80| 66 6c 6f 61 74 09 20 20 | 20 20 73 74 79 6c 65 5f |float. | style_|
|00000e90| 76 61 6c 3b 0a 58 20 20 | 20 20 69 6e 74 09 09 20 |val;.X | int.. |
|00000ea0| 20 20 20 66 69 6c 6c 5f | 73 74 79 6c 65 3b 0a 58 | fill_|style;.X|
|00000eb0| 20 20 20 20 43 6f 6c 6f | 72 09 20 20 20 20 63 6f | Colo|r. co|
|00000ec0| 6c 6f 72 3b 0a 58 7b 0a | 58 20 20 20 20 70 77 5f |lor;.X{.|X pw_|
|00000ed0| 6c 69 6e 65 73 28 77 2c | 20 70 6f 69 6e 74 73 2c |lines(w,| points,|
|00000ee0| 20 6e 70 6f 69 6e 74 73 | 2c 20 6f 70 2c 0a 58 09 | npoints|, op,.X.|
|00000ef0| 20 20 20 20 20 6c 69 6e | 65 5f 77 69 64 74 68 2c | lin|e_width,|
|00000f00| 20 6c 69 6e 65 5f 73 74 | 79 6c 65 2c 20 73 74 79 | line_st|yle, sty|
|00000f10| 6c 65 5f 76 61 6c 2c 20 | 66 69 6c 6c 5f 73 74 79 |le_val, |fill_sty|
|00000f20| 6c 65 2c 20 63 6f 6c 6f | 72 29 3b 0a 58 20 20 20 |le, colo|r);.X |
|00000f30| 20 66 72 65 65 28 70 6f | 69 6e 74 73 29 3b 0a 58 | free(po|ints);.X|
|00000f40| 7d 0a 58 0a 58 2f 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |}.X.X/**|********|
|00000f50| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 20 41 52 |********|***** AR|
|00000f60| 43 20 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |C ******|********|
|00000f70| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2f 0a 58 |********|*****/.X|
|00000f80| 0a 58 64 72 61 77 5f 61 | 72 63 28 61 2c 20 6f 70 |.Xdraw_a|rc(a, op|
|00000f90| 29 0a 58 20 20 20 20 46 | 5f 61 72 63 09 20 20 20 |).X F|_arc. |
|00000fa0| 2a 61 3b 0a 58 20 20 20 | 20 69 6e 74 09 09 20 20 |*a;.X | int.. |
|00000fb0| 20 20 6f 70 3b 0a 58 7b | 0a 58 20 20 20 20 69 6e | op;.X{|.X in|
|00000fc0| 74 09 09 20 20 20 20 72 | 61 64 69 75 73 2c 20 72 |t.. r|adius, r|
|00000fd0| 78 2c 20 72 79 3b 0a 58 | 20 20 20 20 69 6e 74 09 |x, ry;.X| int.|
|00000fe0| 09 20 20 20 20 78 6d 69 | 6e 2c 20 79 6d 69 6e 2c |. xmi|n, ymin,|
|00000ff0| 20 78 6d 61 78 2c 20 79 | 6d 61 78 3b 0a 58 0a 58 | xmax, y|max;.X.X|
|00001000| 20 20 20 20 61 72 63 5f | 62 6f 75 6e 64 28 61 2c | arc_|bound(a,|
|00001010| 20 26 78 6d 69 6e 2c 20 | 26 79 6d 69 6e 2c 20 26 | &xmin, |&ymin, &|
|00001020| 78 6d 61 78 2c 20 26 79 | 6d 61 78 29 3b 0a 58 20 |xmax, &y|max);.X |
|00001030| 20 20 20 69 66 20 28 21 | 6f 76 65 72 6c 61 70 70 | if (!|overlapp|
|00001040| 69 6e 67 28 5a 4f 4f 4d | 58 28 78 6d 69 6e 29 2c |ing(ZOOM|X(xmin),|
|00001050| 20 5a 4f 4f 4d 59 28 79 | 6d 69 6e 29 2c 20 5a 4f | ZOOMY(y|min), ZO|
|00001060| 4f 4d 58 28 78 6d 61 78 | 29 2c 20 5a 4f 4f 4d 59 |OMX(xmax|), ZOOMY|
|00001070| 28 79 6d 61 78 29 2c 0a | 58 09 09 20 20 20 20 20 |(ymax),.|X.. |
|00001080| 63 6c 69 70 5f 78 6d 69 | 6e 2c 20 63 6c 69 70 5f |clip_xmi|n, clip_|
|00001090| 79 6d 69 6e 2c 20 63 6c | 69 70 5f 78 6d 61 78 2c |ymin, cl|ip_xmax,|
|000010a0| 20 63 6c 69 70 5f 79 6d | 61 78 29 29 0a 58 09 72 | clip_ym|ax)).X.r|
|000010b0| 65 74 75 72 6e 3b 0a 58 | 0a 58 20 20 20 20 72 78 |eturn;.X|.X rx|
|000010c0| 20 3d 20 61 2d 3e 70 6f | 69 6e 74 5b 30 5d 2e 78 | = a->po|int[0].x|
|000010d0| 20 2d 20 61 2d 3e 63 65 | 6e 74 65 72 2e 78 3b 0a | - a->ce|nter.x;.|
|000010e0| 58 20 20 20 20 72 79 20 | 3d 20 61 2d 3e 63 65 6e |X ry |= a->cen|
|000010f0| 74 65 72 2e 79 20 2d 20 | 61 2d 3e 70 6f 69 6e 74 |ter.y - |a->point|
|00001100| 5b 30 5d 2e 79 3b 0a 58 | 20 20 20 20 72 61 64 69 |[0].y;.X| radi|
|00001110| 75 73 20 3d 20 72 6f 75 | 6e 64 28 73 71 72 74 28 |us = rou|nd(sqrt(|
|00001120| 28 64 6f 75 62 6c 65 29 | 20 28 72 78 20 2a 20 72 |(double)| (rx * r|
|00001130| 78 20 2b 20 72 79 20 2a | 20 72 79 29 29 29 3b 0a |x + ry *| ry)));.|
|00001140| 58 0a 58 20 20 20 20 63 | 75 72 76 65 28 63 61 6e |X.X c|urve(can|
|00001150| 76 61 73 5f 77 69 6e 2c | 20 72 6f 75 6e 64 28 61 |vas_win,| round(a|
|00001160| 2d 3e 70 6f 69 6e 74 5b | 30 5d 2e 78 20 2d 20 61 |->point[|0].x - a|
|00001170| 2d 3e 63 65 6e 74 65 72 | 2e 78 29 2c 0a 58 09 20 |->center|.x),.X. |
|00001180| 20 72 6f 75 6e 64 28 61 | 2d 3e 63 65 6e 74 65 72 | round(a|->center|
|00001190| 2e 79 20 2d 20 61 2d 3e | 70 6f 69 6e 74 5b 30 5d |.y - a->|point[0]|
|000011a0| 2e 79 29 2c 0a 58 09 20 | 20 72 6f 75 6e 64 28 61 |.y),.X. | round(a|
|000011b0| 2d 3e 70 6f 69 6e 74 5b | 32 5d 2e 78 20 2d 20 61 |->point[|2].x - a|
|000011c0| 2d 3e 63 65 6e 74 65 72 | 2e 78 29 2c 0a 58 09 20 |->center|.x),.X. |
|000011d0| 20 72 6f 75 6e 64 28 61 | 2d 3e 63 65 6e 74 65 72 | round(a|->center|
|000011e0| 2e 79 20 2d 20 61 2d 3e | 70 6f 69 6e 74 5b 32 5d |.y - a->|point[2]|
|000011f0| 2e 79 29 2c 0a 58 09 20 | 20 61 2d 3e 64 69 72 65 |.y),.X. | a->dire|
|00001200| 63 74 69 6f 6e 2c 20 37 | 2a 72 61 64 69 75 73 2c |ction, 7|*radius,|
|00001210| 20 72 61 64 69 75 73 2c | 20 72 61 64 69 75 73 2c | radius,| radius,|
|00001220| 0a 58 09 20 20 72 6f 75 | 6e 64 28 61 2d 3e 63 65 |.X. rou|nd(a->ce|
|00001230| 6e 74 65 72 2e 78 29 2c | 20 72 6f 75 6e 64 28 61 |nter.x),| round(a|
|00001240| 2d 3e 63 65 6e 74 65 72 | 2e 79 29 2c 20 6f 70 2c |->center|.y), op,|
|00001250| 0a 58 09 20 20 61 2d 3e | 74 68 69 63 6b 6e 65 73 |.X. a->|thicknes|
|00001260| 73 2c 20 61 2d 3e 73 74 | 79 6c 65 2c 20 61 2d 3e |s, a->st|yle, a->|
|00001270| 73 74 79 6c 65 5f 76 61 | 6c 2c 20 61 2d 3e 66 69 |style_va|l, a->fi|
|00001280| 6c 6c 5f 73 74 79 6c 65 | 2c 20 61 2d 3e 63 6f 6c |ll_style|, a->col|
|00001290| 6f 72 29 3b 0a 58 0a 58 | 20 20 20 20 64 72 61 77 |or);.X.X| draw|
|000012a0| 5f 61 72 63 61 72 72 6f | 77 73 28 61 2c 20 6f 70 |_arcarro|ws(a, op|
|000012b0| 29 3b 0a 58 7d 0a 58 0a | 58 2f 2a 2a 2a 2a 2a 2a |);.X}.X.|X/******|
|000012c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000012d0| 2a 20 45 4c 4c 49 50 53 | 45 20 2a 2a 2a 2a 2a 2a |* ELLIPS|E ******|
|000012e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000012f0| 2a 2a 2a 2a 2a 2f 0a 58 | 0a 58 64 72 61 77 5f 65 |*****/.X|.Xdraw_e|
|00001300| 6c 6c 69 70 73 65 28 65 | 2c 20 6f 70 29 0a 58 20 |llipse(e|, op).X |
|00001310| 20 20 20 46 5f 65 6c 6c | 69 70 73 65 09 20 20 20 | F_ell|ipse. |
|00001320| 2a 65 3b 0a 58 20 20 20 | 20 69 6e 74 09 09 20 20 |*e;.X | int.. |
|00001330| 20 20 6f 70 3b 0a 58 7b | 0a 58 20 20 20 20 69 6e | op;.X{|.X in|
|00001340| 74 09 09 20 20 20 20 61 | 2c 20 62 2c 20 78 6d 69 |t.. a|, b, xmi|
|00001350| 6e 2c 20 79 6d 69 6e 2c | 20 78 6d 61 78 2c 20 79 |n, ymin,| xmax, y|
|00001360| 6d 61 78 3b 0a 58 0a 58 | 20 20 20 20 65 6c 6c 69 |max;.X.X| elli|
|00001370| 70 73 65 5f 62 6f 75 6e | 64 28 65 2c 20 26 78 6d |pse_boun|d(e, &xm|
|00001380| 69 6e 2c 20 26 79 6d 69 | 6e 2c 20 26 78 6d 61 78 |in, &ymi|n, &xmax|
|00001390| 2c 20 26 79 6d 61 78 29 | 3b 0a 58 20 20 20 20 69 |, &ymax)|;.X i|
|000013a0| 66 20 28 21 6f 76 65 72 | 6c 61 70 70 69 6e 67 28 |f (!over|lapping(|
|000013b0| 5a 4f 4f 4d 58 28 78 6d | 69 6e 29 2c 20 5a 4f 4f |ZOOMX(xm|in), ZOO|
|000013c0| 4d 59 28 79 6d 69 6e 29 | 2c 20 5a 4f 4f 4d 58 28 |MY(ymin)|, ZOOMX(|
|000013d0| 78 6d 61 78 29 2c 20 5a | 4f 4f 4d 59 28 79 6d 61 |xmax), Z|OOMY(yma|
|000013e0| 78 29 2c 0a 58 09 09 20 | 20 20 20 20 63 6c 69 70 |x),.X.. | clip|
|000013f0| 5f 78 6d 69 6e 2c 20 63 | 6c 69 70 5f 79 6d 69 6e |_xmin, c|lip_ymin|
|00001400| 2c 20 63 6c 69 70 5f 78 | 6d 61 78 2c 20 63 6c 69 |, clip_x|max, cli|
|00001410| 70 5f 79 6d 61 78 29 29 | 0a 58 09 72 65 74 75 72 |p_ymax))|.X.retur|
|00001420| 6e 3b 0a 58 0a 58 20 20 | 20 20 69 66 20 28 65 2d |n;.X.X | if (e-|
|00001430| 3e 61 6e 67 6c 65 20 21 | 3d 20 30 2e 30 29 20 7b |>angle !|= 0.0) {|
|00001440| 0a 58 09 61 6e 67 6c 65 | 5f 65 6c 6c 69 70 73 65 |.X.angle|_ellipse|
|00001450| 28 65 2d 3e 63 65 6e 74 | 65 72 2e 78 2c 20 65 2d |(e->cent|er.x, e-|
|00001460| 3e 63 65 6e 74 65 72 2e | 79 2c 20 65 2d 3e 72 61 |>center.|y, e->ra|
|00001470| 64 69 75 73 65 73 2e 78 | 2c 20 65 2d 3e 72 61 64 |diuses.x|, e->rad|
|00001480| 69 75 73 65 73 2e 79 2c | 20 0a 58 09 09 65 2d 3e |iuses.y,| .X..e->|
|00001490| 61 6e 67 6c 65 2c 20 6f | 70 2c 20 65 2d 3e 74 68 |angle, o|p, e->th|
|000014a0| 69 63 6b 6e 65 73 73 2c | 20 65 2d 3e 73 74 79 6c |ickness,| e->styl|
|000014b0| 65 2c 20 0a 58 09 09 65 | 2d 3e 73 74 79 6c 65 5f |e, .X..e|->style_|
|000014c0| 76 61 6c 2c 20 65 2d 3e | 66 69 6c 6c 5f 73 74 79 |val, e->|fill_sty|
|000014d0| 6c 65 2c 20 65 2d 3e 63 | 6f 6c 6f 72 29 3b 0a 58 |le, e->c|olor);.X|
|000014e0| 20 20 20 20 2f 2a 20 69 | 74 20 69 73 20 6d 75 63 | /* i|t is muc|
|000014f0| 68 20 66 61 73 74 65 72 | 20 74 6f 20 75 73 65 20 |h faster| to use |
|00001500| 63 75 72 76 65 28 29 20 | 66 6f 72 20 64 61 73 68 |curve() |for dash|
|00001510| 65 64 20 61 6e 64 20 64 | 6f 74 74 65 64 20 6c 69 |ed and d|otted li|
|00001520| 6e 65 73 20 74 68 61 74 | 20 74 6f 0a 58 20 20 20 |nes that| to.X |
|00001530| 20 20 20 20 75 73 65 20 | 74 68 65 20 73 65 72 76 | use |the serv|
|00001540| 65 72 27 73 20 73 6c 6f | 6f 6f 6f 77 20 61 6c 67 |er's slo|ooow alg|
|00001550| 6f 72 69 74 68 6d 73 20 | 66 6f 72 20 74 68 61 74 |orithms |for that|
|00001560| 20 2a 2f 0a 58 20 20 20 | 20 7d 20 65 6c 73 65 20 | */.X | } else |
|00001570| 69 66 20 28 6f 70 20 21 | 3d 20 45 52 41 53 45 20 |if (op !|= ERASE |
|00001580| 26 26 20 28 65 2d 3e 73 | 74 79 6c 65 20 3d 3d 20 |&& (e->s|tyle == |
|00001590| 44 4f 54 54 45 44 5f 4c | 49 4e 45 20 7c 7c 20 65 |DOTTED_L|INE || e|
|000015a0| 2d 3e 73 74 79 6c 65 20 | 3d 3d 20 44 41 53 48 5f |->style |== DASH_|
|000015b0| 4c 49 4e 45 29 29 20 7b | 0a 58 09 61 20 3d 20 65 |LINE)) {|.X.a = e|
|000015c0| 2d 3e 72 61 64 69 75 73 | 65 73 2e 78 3b 0a 58 09 |->radius|es.x;.X.|
|000015d0| 62 20 3d 20 65 2d 3e 72 | 61 64 69 75 73 65 73 2e |b = e->r|adiuses.|
|000015e0| 79 3b 0a 58 09 63 75 72 | 76 65 28 63 61 6e 76 61 |y;.X.cur|ve(canva|
|000015f0| 73 5f 77 69 6e 2c 20 61 | 2c 20 30 2c 20 61 2c 20 |s_win, a|, 0, a, |
|00001600| 30 2c 20 65 2d 3e 64 69 | 72 65 63 74 69 6f 6e 2c |0, e->di|rection,|
|00001610| 20 37 2a 6d 61 78 32 28 | 61 2c 62 29 2c 20 28 62 | 7*max2(|a,b), (b|
|00001620| 20 2a 20 62 29 2c 20 28 | 61 20 2a 20 61 29 2c 0a | * b), (|a * a),.|
|00001630| 58 09 20 20 20 20 20 20 | 65 2d 3e 63 65 6e 74 65 |X. |e->cente|
|00001640| 72 2e 78 2c 20 65 2d 3e | 63 65 6e 74 65 72 2e 79 |r.x, e->|center.y|
|00001650| 2c 20 6f 70 2c 0a 58 09 | 20 20 20 20 20 20 65 2d |, op,.X.| e-|
|00001660| 3e 74 68 69 63 6b 6e 65 | 73 73 2c 20 65 2d 3e 73 |>thickne|ss, e->s|
|00001670| 74 79 6c 65 2c 20 65 2d | 3e 73 74 79 6c 65 5f 76 |tyle, e-|>style_v|
|00001680| 61 6c 2c 20 65 2d 3e 66 | 69 6c 6c 5f 73 74 79 6c |al, e->f|ill_styl|
|00001690| 65 2c 20 65 2d 3e 63 6f | 6c 6f 72 29 3b 0a 58 20 |e, e->co|lor);.X |
|000016a0| 20 20 20 2f 2a 20 68 6f | 77 65 76 65 72 2c 20 66 | /* ho|wever, f|
|000016b0| 6f 72 20 73 6f 6c 69 64 | 20 6c 69 6e 65 73 20 74 |or solid| lines t|
|000016c0| 68 65 20 73 65 72 76 65 | 72 20 69 73 20 6d 75 75 |he serve|r is muu|
|000016d0| 75 63 68 20 66 61 73 74 | 65 72 20 65 76 65 6e 20 |uch fast|er even |
|000016e0| 66 6f 72 20 74 68 69 63 | 6b 20 6c 69 6e 65 73 20 |for thic|k lines |
|000016f0| 2a 2f 0a 58 20 20 20 20 | 7d 20 65 6c 73 65 20 7b |*/.X |} else {|
|00001700| 0a 58 09 78 6d 69 6e 20 | 3d 20 65 2d 3e 63 65 6e |.X.xmin |= e->cen|
|00001710| 74 65 72 2e 78 20 2d 20 | 65 2d 3e 72 61 64 69 75 |ter.x - |e->radiu|
|00001720| 73 65 73 2e 78 3b 0a 58 | 09 79 6d 69 6e 20 3d 20 |ses.x;.X|.ymin = |
|00001730| 65 2d 3e 63 65 6e 74 65 | 72 2e 79 20 2d 20 65 2d |e->cente|r.y - e-|
|00001740| 3e 72 61 64 69 75 73 65 | 73 2e 79 3b 0a 58 09 78 |>radiuse|s.y;.X.x|
|00001750| 6d 61 78 20 3d 20 65 2d | 3e 63 65 6e 74 65 72 2e |max = e-|>center.|
|00001760| 78 20 2b 20 65 2d 3e 72 | 61 64 69 75 73 65 73 2e |x + e->r|adiuses.|
|00001770| 78 3b 0a 58 09 79 6d 61 | 78 20 3d 20 65 2d 3e 63 |x;.X.yma|x = e->c|
|00001780| 65 6e 74 65 72 2e 79 20 | 2b 20 65 2d 3e 72 61 64 |enter.y |+ e->rad|
|00001790| 69 75 73 65 73 2e 79 3b | 0a 58 09 70 77 5f 63 75 |iuses.y;|.X.pw_cu|
|000017a0| 72 76 65 28 63 61 6e 76 | 61 73 5f 77 69 6e 2c 20 |rve(canv|as_win, |
|000017b0| 78 6d 69 6e 2c 20 79 6d | 69 6e 2c 20 78 6d 61 78 |xmin, ym|in, xmax|
|000017c0| 2c 20 79 6d 61 78 2c 20 | 6f 70 2c 0a 58 09 09 20 |, ymax, |op,.X.. |
|000017d0| 65 2d 3e 74 68 69 63 6b | 6e 65 73 73 2c 20 65 2d |e->thick|ness, e-|
|000017e0| 3e 73 74 79 6c 65 2c 20 | 65 2d 3e 73 74 79 6c 65 |>style, |e->style|
|000017f0| 5f 76 61 6c 2c 20 65 2d | 3e 66 69 6c 6c 5f 73 74 |_val, e-|>fill_st|
|00001800| 79 6c 65 2c 0a 58 09 09 | 20 65 2d 3e 63 6f 6c 6f |yle,.X..| e->colo|
|00001810| 72 29 3b 0a 58 20 20 20 | 20 7d 0a 58 7d 0a 58 0a |r);.X | }.X}.X.|
|00001820| 58 2f 2a 0a 58 20 2a 20 | 20 41 6e 20 45 6c 6c 69 |X/*.X * | An Elli|
|00001830| 70 73 65 20 47 65 6e 65 | 72 61 74 6f 72 2e 0a 58 |pse Gene|rator..X|
|00001840| 20 2a 20 20 57 72 69 74 | 74 65 6e 20 62 79 20 4a | * Writ|ten by J|
|00001850| 61 6d 65 73 20 54 6f 75 | 67 68 20 20 20 37 74 68 |ames Tou|gh 7th|
|00001860| 20 4d 61 79 20 39 32 0a | 58 20 2a 0a 58 20 2a 20 | May 92.|X *.X * |
|00001870| 20 54 68 65 20 66 6f 6c | 6c 6f 77 69 6e 67 20 72 | The fol|lowing r|
|00001880| 6f 75 74 69 6e 65 73 20 | 64 69 73 70 6c 61 79 73 |outines |displays|
|00001890| 20 61 20 66 69 6c 6c 65 | 64 20 65 6c 6c 69 70 73 | a fille|d ellips|
|000018a0| 65 20 6f 6e 20 74 68 65 | 20 73 63 72 65 65 6e 20 |e on the| screen |
|000018b0| 66 72 6f 6d 20 74 68 65 | 0a 58 20 2a 20 20 20 20 |from the|.X * |
|000018c0| 73 65 6d 69 2d 6d 69 6e | 6f 72 20 61 78 69 73 20 |semi-min|or axis |
|000018d0| 27 61 27 2c 20 73 65 6d | 69 2d 6d 61 6a 6f 72 20 |'a', sem|i-major |
|000018e0| 61 78 69 73 20 27 62 27 | 20 61 6e 64 20 61 6e 67 |axis 'b'| and ang|
|000018f0| 6c 65 20 6f 66 20 72 6f | 74 61 74 69 6f 6e 0a 58 |le of ro|tation.X|
|00001900| 20 2a 20 20 20 20 27 70 | 68 69 27 2e 0a 58 20 2a | * 'p|hi'..X *|
|00001910| 0a 58 20 2a 20 20 49 74 | 20 77 6f 72 6b 73 20 61 |.X * It| works a|
|00001920| 6c 6f 6e 67 20 74 68 65 | 73 65 20 70 72 69 6e 63 |long the|se princ|
|00001930| 69 70 6c 65 73 20 2e 2e | 2e 2e 2e 0a 58 20 2a 0a |iples ..|....X *.|
|00001940| 58 20 2a 20 20 20 20 20 | 20 20 20 54 68 65 20 73 |X * | The s|
|00001950| 74 61 6e 64 61 72 64 20 | 65 6c 6c 69 70 73 65 20 |tandard |ellipse |
|00001960| 65 71 75 61 74 69 6f 6e | 20 69 73 0a 58 20 2a 0a |equation| is.X *.|
|00001970| 58 20 2a 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X * | |
|00001980| 78 2a 78 20 20 20 20 20 | 79 2a 79 0a 58 20 2a 20 |x*x |y*y.X * |
|00001990| 20 20 20 20 20 20 20 20 | 20 20 20 20 2d 2d 2d 20 | | --- |
|000019a0| 20 2b 20 20 2d 2d 2d 0a | 58 20 2a 20 20 20 20 20 | + ---.|X * |
|000019b0| 20 20 20 20 20 20 20 20 | 61 2a 61 20 20 20 20 20 | |a*a |
|000019c0| 62 2a 62 0a 58 20 2a 0a | 58 20 2a 0a 58 20 2a 20 |b*b.X *.|X *.X * |
|000019d0| 20 20 20 20 20 20 20 52 | 6f 74 61 74 69 6f 6e 20 | R|otation |
|000019e0| 6f 66 20 61 20 70 6f 69 | 6e 74 20 28 78 2c 79 29 |of a poi|nt (x,y)|
|000019f0| 20 69 73 20 77 65 6c 6c | 20 6b 6e 6f 77 6e 20 74 | is well| known t|
|00001a00| 68 72 6f 75 67 68 20 74 | 68 65 20 75 73 65 20 6f |hrough t|he use o|
|00001a10| 66 0a 58 20 2a 0a 58 20 | 2a 20 20 20 20 20 20 20 |f.X *.X |* |
|00001a20| 20 20 20 20 20 78 27 20 | 3d 20 78 2a 43 4f 53 28 | x' |= x*COS(|
|00001a30| 70 68 69 29 20 2d 20 79 | 2a 53 49 4e 28 70 68 69 |phi) - y|*SIN(phi|
|00001a40| 29 0a 58 20 2a 20 20 20 | 20 20 20 20 20 20 20 20 |).X * | |
|00001a50| 20 79 27 20 3d 20 79 2a | 43 4f 53 28 70 68 69 29 | y' = y*|COS(phi)|
|00001a60| 20 2b 20 79 2a 43 4f 53 | 28 70 68 69 29 0a 58 20 | + y*COS|(phi).X |
|00001a70| 2a 0a 58 20 2a 20 20 20 | 20 20 20 20 20 54 61 6b |*.X * | Tak|
|00001a80| 69 6e 67 20 74 68 65 73 | 65 20 74 6f 20 74 6f 67 |ing thes|e to tog|
|00001a90| 65 74 68 65 72 2c 20 74 | 68 69 73 20 67 69 76 65 |ether, t|his give|
|00001aa0| 73 20 74 68 65 20 65 71 | 75 61 74 69 6f 6e 20 66 |s the eq|uation f|
|00001ab0| 6f 72 20 61 20 72 6f 74 | 61 74 65 64 0a 58 20 2a |or a rot|ated.X *|
|00001ac0| 20 20 20 20 20 20 65 6c | 6c 69 70 73 65 20 63 65 | el|lipse ce|
|00001ad0| 6e 74 65 72 65 64 20 61 | 72 6f 75 6e 64 20 74 68 |ntered a|round th|
|00001ae0| 65 20 6f 72 69 67 69 6e | 2e 0a 58 20 2a 0a 58 20 |e origin|..X *.X |
|00001af0| 2a 20 20 20 20 20 20 20 | 20 20 20 20 5b 78 2a 43 |* | [x*C|
|00001b00| 4f 53 28 70 68 69 29 20 | 2d 20 79 2a 53 49 4e 28 |OS(phi) |- y*SIN(|
|00001b10| 70 68 69 29 5d 5e 32 20 | 20 20 5b 78 2a 53 49 4e |phi)]^2 | [x*SIN|
|00001b20| 28 70 68 69 29 20 2b 20 | 79 2a 43 4f 53 28 70 68 |(phi) + |y*COS(ph|
|00001b30| 69 29 5d 5e 32 0a 58 20 | 2a 20 20 20 20 20 20 20 |i)]^2.X |* |
|00001b40| 20 20 20 20 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d | ----|--------|
|00001b50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 20 |--------|------- |
|00001b60| 2b 20 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |+ ------|--------|
|00001b70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 0a 58 20 |--------|-----.X |
|00001b80| 2a 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |* | |
|00001b90| 20 20 20 20 20 20 20 61 | 2a 61 20 20 20 20 20 20 | a|*a |
|00001ba0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001bb0| 20 20 20 20 20 62 2a 62 | 0a 58 20 2a 0a 58 20 2a | b*b|.X *.X *|
|00001bc0| 20 20 20 20 20 20 20 20 | 4e 4f 54 45 20 2d 20 20 | |NOTE - |
|00001bd0| 73 6f 6d 65 20 6f 66 20 | 74 68 65 20 61 62 6f 76 |some of |the abov|
|00001be0| 65 20 65 71 75 61 74 69 | 6f 6e 20 63 61 6e 20 62 |e equati|on can b|
|00001bf0| 65 20 70 72 65 63 6f 6d | 70 75 74 65 64 2c 20 65 |e precom|puted, e|
|00001c00| 67 2c 0a 58 20 2a 0a 58 | 20 2a 20 20 20 20 20 20 |g,.X *.X| * |
|00001c10| 20 20 20 20 20 20 20 20 | 69 20 3d 20 43 4f 53 28 | |i = COS(|
|00001c20| 70 68 69 29 2f 61 20 20 | 20 20 20 20 20 20 61 6e |phi)/a | an|
|00001c30| 64 20 20 20 20 20 20 20 | 20 6a 20 3d 20 53 49 4e |d | j = SIN|
|00001c40| 28 70 68 69 29 2f 62 0a | 58 20 2a 20 20 20 20 20 |(phi)/b.|X * |
|00001c50| 20 20 0a 58 20 2a 20 20 | 20 20 20 20 20 20 4e 4f | .X * | NO|
|00001c60| 54 45 20 2d 20 20 79 20 | 69 73 20 63 6f 6e 73 74 |TE - y |is const|
|00001c70| 61 6e 74 20 66 6f 72 20 | 65 61 63 68 20 6c 69 6e |ant for |each lin|
|00001c80| 65 20 73 6f 2c 0a 58 20 | 2a 0a 58 20 2a 20 20 20 |e so,.X |*.X * |
|00001c90| 20 20 20 20 20 20 20 20 | 20 20 20 6d 20 3d 20 2d | | m = -|
|00001ca0| 79 6b 2a 53 49 4e 28 70 | 68 69 29 2f 61 20 20 20 |yk*SIN(p|hi)/a |
|00001cb0| 20 61 6e 64 20 20 20 20 | 20 6e 20 3d 20 79 6b 2a | and | n = yk*|
|00001cc0| 43 4f 53 28 70 68 69 29 | 2f 62 0a 58 20 2a 20 20 |COS(phi)|/b.X * |
|00001cd0| 20 20 20 20 20 20 20 20 | 20 20 20 20 77 68 65 72 | | wher|
|00001ce0| 65 20 79 6b 20 73 74 61 | 6e 64 73 20 66 6f 72 20 |e yk sta|nds for |
|00001cf0| 74 68 65 20 6b 74 68 20 | 6c 69 6e 65 20 28 20 79 |the kth |line ( y|
|00001d00| 20 73 75 62 73 63 72 69 | 70 74 20 6b 29 0a 58 20 | subscri|pt k).X |
|00001d10| 2a 0a 58 20 2a 20 20 20 | 20 20 20 20 20 57 68 65 |*.X * | Whe|
|00001d20| 72 65 20 79 6b 3d 79 2c | 20 77 65 20 67 65 74 20 |re yk=y,| we get |
|00001d30| 61 20 71 75 61 64 72 61 | 74 69 63 2c 0a 58 20 2a |a quadra|tic,.X *|
|00001d40| 0a 58 20 2a 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X * | |
|00001d50| 20 20 28 69 2a 78 20 2b | 20 6d 29 5e 32 20 2b 20 | (i*x +| m)^2 + |
|00001d60| 28 6a 2a 78 20 2b 20 6e | 29 5e 32 20 3d 20 31 0a |(j*x + n|)^2 = 1.|
|00001d70| 58 20 2a 0a 58 20 2a 20 | 20 20 20 20 20 20 20 54 |X *.X * | T|
|00001d80| 68 75 73 20 66 6f 72 20 | 61 6e 79 20 70 61 72 74 |hus for |any part|
|00001d90| 69 63 75 6c 61 72 20 6c | 69 6e 65 2c 20 79 2c 20 |icular l|ine, y, |
|00001da0| 74 68 65 72 65 20 69 73 | 20 74 77 6f 20 63 6f 72 |there is| two cor|
|00001db0| 72 65 73 70 6f 6e 64 69 | 6e 67 20 78 0a 58 20 2a |respondi|ng x.X *|
|00001dc0| 20 20 20 20 20 20 76 61 | 6c 75 65 73 2e 20 54 68 | va|lues. Th|
|00001dd0| 65 73 65 20 61 72 65 20 | 74 68 65 20 72 6f 6f 74 |ese are |the root|
|00001de0| 73 20 6f 66 20 74 68 65 | 20 71 75 61 64 72 61 74 |s of the| quadrat|
|00001df0| 69 63 2e 20 54 6f 20 67 | 65 74 20 74 68 65 20 72 |ic. To g|et the r|
|00001e00| 6f 6f 74 73 2c 20 0a 58 | 20 2a 20 20 20 20 20 20 |oots, .X| * |
|00001e10| 74 68 65 20 61 62 6f 76 | 65 20 65 71 75 61 74 69 |the abov|e equati|
|00001e20| 6f 6e 20 63 61 6e 20 62 | 65 20 72 65 61 72 72 61 |on can b|e rearra|
|00001e30| 6e 67 65 64 20 75 73 69 | 6e 67 20 74 68 65 20 73 |nged usi|ng the s|
|00001e40| 74 61 6e 64 61 72 64 20 | 6d 65 74 68 6f 64 2c 20 |tandard |method, |
|00001e50| 0a 58 20 2a 0a 58 20 2a | 20 20 20 20 20 20 20 20 |.X *.X *| |
|00001e60| 20 20 2d 28 69 2a 6d 20 | 2b 20 6a 2a 6e 29 20 2b | -(i*m |+ j*n) +|
|00001e70| 2d 20 73 71 72 74 5b 69 | 5e 32 20 2b 20 6a 5e 32 |- sqrt[i|^2 + j^2|
|00001e80| 20 2d 20 28 69 2a 6e 20 | 2d 6a 2a 6d 29 5e 32 5d | - (i*n |-j*m)^2]|
|00001e90| 0a 58 20 2a 20 20 20 20 | 20 20 78 20 3d 20 2d 2d |.X * | x = --|
|00001ea0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001eb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001ec0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0a 58 20 2a |--------|----.X *|
|00001ed0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001ee0| 20 20 20 20 20 20 20 20 | 20 20 20 69 5e 32 20 2b | | i^2 +|
|00001ef0| 20 6a 5e 32 20 0a 58 20 | 2a 0a 58 20 2a 20 20 20 | j^2 .X |*.X * |
|00001f00| 20 20 20 20 20 4e 4f 54 | 45 20 2d 20 20 61 67 61 | NOT|E - aga|
|00001f10| 69 6e 20 6d 75 63 68 20 | 6f 66 20 74 68 69 73 20 |in much |of this |
|00001f20| 65 71 75 61 74 69 6f 6e | 20 63 61 6e 20 62 65 20 |equation| can be |
|00001f30| 70 72 65 63 6f 6d 70 75 | 74 65 64 2e 0a 58 20 2a |precompu|ted..X *|
|00001f40| 20 20 20 20 20 0a 58 20 | 2a 20 20 20 20 20 20 20 | .X |* |
|00001f50| 20 20 20 20 63 31 20 3d | 20 69 5e 32 20 2b 20 6a | c1 =| i^2 + j|
|00001f60| 5e 32 20 0a 58 20 2a 20 | 20 20 20 20 20 20 20 20 |^2 .X * | |
|00001f70| 20 20 63 32 20 3d 20 5b | 43 4f 53 28 70 68 69 29 | c2 = [|COS(phi)|
|00001f80| 2a 53 49 4e 28 70 68 69 | 29 2a 28 61 2d 62 29 5d |*SIN(phi|)*(a-b)]|
|00001f90| 0a 58 20 2a 20 20 20 20 | 20 20 20 20 20 20 20 63 |.X * | c|
|00001fa0| 33 20 3d 20 5b 62 2a 62 | 2a 28 43 4f 53 28 70 68 |3 = [b*b|*(COS(ph|
|00001fb0| 69 29 5e 32 29 20 2b 20 | 61 2a 61 2a 28 53 49 4e |i)^2) + |a*a*(SIN|
|00001fc0| 28 70 68 69 29 5e 32 29 | 5d 0a 58 20 2a 20 20 20 |(phi)^2)|].X * |
|00001fd0| 20 20 20 20 20 20 20 20 | 63 34 20 3d 20 61 2a 62 | |c4 = a*b|
|00001fe0| 2f 63 33 0a 58 20 2a 20 | 0a 58 20 2a 20 20 20 20 |/c3.X * |.X * |
|00001ff0| 20 20 78 20 3d 20 63 32 | 2a 79 20 2b 2d 20 63 34 | x = c2|*y +- c4|
|00002000| 2a 73 71 72 74 28 63 33 | 20 2d 20 79 2a 79 29 2c |*sqrt(c3| - y*y),|
|00002010| 20 20 20 20 77 68 65 72 | 65 20 2b 2d 20 6d 75 73 | wher|e +- mus|
|00002020| 74 20 62 65 20 65 76 61 | 6c 75 61 74 65 64 20 6f |t be eva|luated o|
|00002030| 6e 63 65 0a 58 20 2a 20 | 20 20 20 20 20 20 20 20 |nce.X * | |
|00002040| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002050| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 66 6f 72 | | for|
|00002060| 20 70 6c 75 73 2c 20 61 | 6e 64 20 6f 6e 63 65 20 | plus, a|nd once |
|00002070| 66 6f 72 20 6d 69 6e 75 | 73 2e 20 0a 58 20 2a 0a |for minu|s. .X *.|
|00002080| 58 20 2a 20 20 20 20 20 | 20 20 20 57 65 20 61 6c |X * | We al|
|00002090| 73 6f 20 6e 65 65 64 20 | 74 6f 20 6b 6e 6f 77 20 |so need |to know |
|000020a0| 68 6f 77 20 6c 61 72 67 | 65 20 74 68 65 20 65 6c |how larg|e the el|
|000020b0| 6c 69 70 73 65 20 69 73 | 2e 20 54 68 69 73 20 63 |lipse is|. This c|
|000020c0| 6f 6e 64 69 74 69 6f 6e | 0a 58 20 2a 20 20 20 20 |ondition|.X * |
|000020d0| 20 20 61 72 69 73 65 73 | 20 77 68 65 6e 20 74 68 | arises| when th|
|000020e0| 65 20 73 71 72 74 20 6f | 66 20 74 68 65 20 61 62 |e sqrt o|f the ab|
|000020f0| 6f 76 65 20 65 71 75 61 | 74 69 6f 6e 20 65 76 61 |ove equa|tion eva|
|00002100| 6c 75 61 74 65 73 20 74 | 6f 20 7a 65 72 6f 2e 0a |luates t|o zero..|
|00002110| 58 20 2a 20 20 20 20 20 | 20 54 68 75 73 20 74 68 |X * | Thus th|
|00002120| 65 20 68 65 69 67 68 74 | 20 6f 66 20 74 68 65 20 |e height| of the |
|00002130| 65 6c 6c 69 70 73 65 20 | 69 73 20 67 69 76 65 20 |ellipse |is give |
|00002140| 62 79 20 0a 58 20 2a 20 | 0a 58 20 2a 20 20 20 20 |by .X * |.X * |
|00002150| 20 20 20 20 20 20 20 20 | 20 20 73 71 72 74 5b 20 | | sqrt[ |
|00002160| 62 2a 62 2a 28 43 4f 53 | 28 70 68 69 29 5e 32 29 |b*b*(COS|(phi)^2)|
|00002170| 20 2b 20 61 2a 61 2a 28 | 53 49 4e 28 70 68 69 29 | + a*a*(|SIN(phi)|
|00002180| 5e 32 29 20 5d 0a 58 20 | 2a 0a 58 20 2a 20 20 20 |^2) ].X |*.X * |
|00002190| 20 20 20 20 77 68 69 63 | 68 20 6a 75 73 74 20 68 | whic|h just h|
|000021a0| 61 70 70 65 6e 73 20 74 | 6f 20 62 65 20 65 71 75 |appens t|o be equ|
|000021b0| 61 6c 20 74 6f 20 73 71 | 72 74 28 63 33 29 2e 0a |al to sq|rt(c3)..|
|000021c0| 58 20 2a 0a 58 20 2a 20 | 20 20 20 20 20 20 20 20 |X *.X * | |
|000021d0| 49 74 20 69 73 20 6e 6f | 77 20 70 6f 73 73 69 62 |It is no|w possib|
|000021e0| 6c 65 20 74 6f 20 63 72 | 65 61 74 65 20 61 20 72 |le to cr|eate a r|
|000021f0| 6f 75 74 69 6e 65 20 74 | 68 61 74 20 77 69 6c 6c |outine t|hat will|
|00002200| 20 73 63 61 6e 20 63 6f | 6e 76 65 72 74 20 0a 58 | scan co|nvert .X|
|00002210| 20 2a 20 20 20 20 20 20 | 20 74 68 65 20 65 6c 6c | * | the ell|
|00002220| 69 70 73 65 20 6f 6e 20 | 74 68 65 20 73 63 72 65 |ipse on |the scre|
|00002230| 65 6e 2e 0a 58 20 2a 0a | 58 20 2a 20 20 20 20 20 |en..X *.|X * |
|00002240| 20 20 20 4e 4f 54 45 20 | 2d 20 20 63 32 20 69 73 | NOTE |- c2 is|
|00002250| 20 74 68 65 20 67 72 61 | 64 69 65 6e 74 20 6f 66 | the gra|dient of|
|00002260| 20 74 68 65 20 6e 65 77 | 20 65 6c 6c 69 70 73 65 | the new| ellipse|
|00002270| 20 61 78 69 73 2e 0a 58 | 20 2a 20 20 20 20 20 20 | axis..X| * |
|00002280| 20 20 20 20 20 20 20 20 | 20 20 63 34 20 69 73 20 | | c4 is |
|00002290| 74 68 65 20 6e 65 77 20 | 73 65 6d 69 2d 6d 69 6e |the new |semi-min|
|000022a0| 6f 72 20 61 78 69 73 2c | 20 27 61 27 2e 0a 58 20 |or axis,| 'a'..X |
|000022b0| 2a 20 20 20 20 20 20 20 | 20 20 20 20 73 71 72 28 |* | sqr(|
|000022c0| 63 33 29 20 69 73 20 74 | 68 65 20 6e 65 77 20 73 |c3) is t|he new s|
|000022d0| 65 6d 69 2d 6d 61 6a 6f | 72 20 61 78 69 73 2c 20 |emi-majo|r axis, |
|000022e0| 27 62 27 2e 0a 58 20 2a | 0a 58 20 2a 20 20 20 20 |'b'..X *|.X * |
|000022f0| 20 20 20 20 20 54 68 65 | 73 65 20 76 61 6c 75 65 | The|se value|
|00002300| 73 20 63 6f 75 6c 64 20 | 62 65 20 75 73 65 64 20 |s could |be used |
|00002310| 69 6e 20 61 20 34 57 53 | 20 6f 72 20 38 57 53 20 |in a 4WS| or 8WS |
|00002320| 65 6c 6c 69 70 73 65 20 | 67 65 6e 65 72 61 74 6f |ellipse |generato|
|00002330| 72 0a 58 20 2a 20 20 20 | 20 20 20 20 74 68 61 74 |r.X * | that|
|00002340| 20 64 6f 65 73 20 6e 6f | 74 20 77 6f 72 6b 20 6f | does no|t work o|
|00002350| 6e 20 72 6f 74 61 74 69 | 6f 6e 2c 20 74 6f 20 67 |n rotati|on, to g|
|00002360| 69 76 65 20 74 68 65 20 | 66 65 65 6c 20 6f 66 20 |ive the |feel of |
|00002370| 61 20 72 6f 74 61 74 65 | 64 0a 58 20 2a 20 20 20 |a rotate|d.X * |
|00002380| 20 20 20 20 65 6c 6c 69 | 70 73 65 2e 20 54 68 65 | elli|pse. The|
|00002390| 73 65 20 65 6c 6c 69 70 | 73 65 73 20 61 72 65 20 |se ellip|ses are |
|000023a0| 6e 6f 74 20 76 65 72 79 | 20 61 63 63 75 72 61 74 |not very| accurat|
|000023b0| 65 20 61 6e 64 20 67 69 | 76 65 20 76 69 73 61 62 |e and gi|ve visab|
|000023c0| 6c 65 0a 58 20 2a 20 20 | 20 20 20 20 20 62 75 6d |le.X * | bum|
|000023d0| 70 73 20 61 6c 6f 6e 67 | 20 74 68 65 20 65 64 67 |ps along| the edg|
|000023e0| 65 20 6f 66 20 74 68 65 | 20 65 6c 6c 69 70 73 65 |e of the| ellipse|
|000023f0| 2e 20 48 6f 77 65 76 65 | 72 2c 20 74 68 65 73 65 |. Howeve|r, these|
|00002400| 20 72 6f 75 74 69 6e 65 | 73 0a 58 20 2a 20 20 20 | routine|s.X * |
|00002410| 20 20 20 20 61 72 65 20 | 76 65 72 79 20 71 75 69 | are |very qui|
|00002420| 63 6b 2c 20 61 6e 64 20 | 67 69 76 65 20 61 20 67 |ck, and |give a g|
|00002430| 6f 6f 64 20 61 70 70 72 | 6f 78 69 6d 61 74 69 6f |ood appr|oximatio|
|00002440| 6e 20 74 6f 20 61 20 72 | 6f 74 61 74 65 64 20 65 |n to a r|otated e|
|00002450| 6c 6c 69 70 73 65 2e 0a | 58 20 2a 0a 58 20 2a 20 |llipse..|X *.X * |
|00002460| 20 20 20 20 20 20 4e 4f | 54 45 53 20 6f 6e 20 74 | NO|TES on t|
|00002470| 68 65 20 63 6f 64 65 20 | 67 69 76 65 6e 2e 0a 58 |he code |given..X|
|00002480| 20 2a 20 0a 58 20 2a 20 | 20 20 20 20 20 20 20 20 | * .X * | |
|00002490| 20 20 41 6c 6c 20 74 68 | 65 20 72 6f 75 74 69 6e | All th|e routin|
|000024a0| 65 73 20 74 61 6b 65 20 | 74 68 65 72 65 20 70 61 |es take |there pa|
|000024b0| 72 61 6d 65 74 65 72 73 | 20 61 73 20 28 20 78 2c |rameters| as ( x,|
|000024c0| 20 79 2c 20 61 2c 20 62 | 2c 20 70 68 69 20 29 2c | y, a, b|, phi ),|
|000024d0| 0a 58 20 2a 20 20 20 20 | 20 20 20 20 20 20 20 77 |.X * | w|
|000024e0| 68 65 72 65 20 78 2c 79 | 20 61 72 65 20 74 68 65 |here x,y| are the|
|000024f0| 20 63 65 6e 74 65 72 20 | 6f 66 20 74 68 65 20 65 | center |of the e|
|00002500| 6c 6c 69 70 73 65 20 28 | 20 72 65 6c 61 74 69 76 |llipse (| relativ|
|00002510| 65 20 74 6f 20 74 68 65 | 20 0a 58 20 2a 20 20 20 |e to the| .X * |
|00002520| 20 20 20 20 20 20 20 20 | 6f 72 69 67 69 6e 20 29 | |origin )|
|00002530| 2c 20 61 20 61 6e 64 20 | 62 20 61 72 65 20 74 68 |, a and |b are th|
|00002540| 65 20 76 65 72 74 69 63 | 61 6c 20 61 6e 64 20 68 |e vertic|al and h|
|00002550| 6f 72 69 7a 6f 6e 74 61 | 6c 20 61 78 69 73 2c 20 |orizonta|l axis, |
|00002560| 61 6e 64 0a 58 20 2a 20 | 20 20 20 20 20 20 20 20 |and.X * | |
|00002570| 20 20 70 68 69 20 69 73 | 20 74 68 65 20 61 6e 67 | phi is| the ang|
|00002580| 6c 65 20 6f 66 20 72 6f | 74 61 74 69 6f 6e 20 69 |le of ro|tation i|
|00002590| 6e 20 52 41 44 49 41 4e | 53 2e 0a 58 20 2a 0a 58 |n RADIAN|S..X *.X|
|000025a0| 20 2a 20 20 20 20 20 20 | 20 20 20 20 20 54 68 65 | * | The|
|000025b0| 20 27 6d 6f 76 65 74 6f | 28 78 2c 79 29 27 20 63 | 'moveto|(x,y)' c|
|000025c0| 6f 6d 6d 61 6e 64 20 6d | 6f 76 65 73 20 74 68 65 |ommand m|oves the|
|000025d0| 20 73 63 72 65 65 6e 20 | 63 75 72 73 6f 72 20 74 | screen |cursor t|
|000025e0| 6f 20 74 68 65 20 0a 58 | 20 2a 20 20 20 20 20 20 |o the .X| * |
|000025f0| 20 20 20 20 20 20 20 20 | 20 28 78 2c 79 29 20 70 | | (x,y) p|
|00002600| 6f 69 6e 74 2e 0a 58 20 | 2a 20 20 20 20 20 20 20 |oint..X |* |
|00002610| 20 20 20 20 54 68 65 20 | 27 6c 69 6e 65 74 6f 28 | The |'lineto(|
|00002620| 78 2c 79 29 27 20 63 6f | 6d 6d 61 6e 64 20 64 72 |x,y)' co|mmand dr|
|00002630| 61 77 73 20 61 20 6c 69 | 6e 65 20 66 72 6f 6d 20 |aws a li|ne from |
|00002640| 74 68 65 20 63 75 72 73 | 6f 72 20 74 6f 0a 58 20 |the curs|or to.X |
|00002650| 2a 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |* | |
|00002660| 74 68 65 20 70 6f 69 6e | 74 20 28 78 2c 79 29 2e |the poin|t (x,y).|
|00002670| 0a 58 20 2a 0a 58 20 2a | 0a 58 20 2a 20 20 20 45 |.X *.X *|.X * E|
|00002680| 78 61 6d 70 6c 65 73 2c | 0a 58 20 2a 0a 58 20 2a |xamples,|.X *.X *|
|00002690| 20 20 20 20 20 20 20 4e | 4f 54 45 2c 20 61 6c 6c | N|OTE, all|
|000026a0| 20 61 6e 67 6c 65 73 20 | 6d 75 73 74 20 62 65 20 | angles |must be |
|000026b0| 67 69 76 65 6e 20 69 6e | 20 72 61 64 69 61 6e 73 |given in| radians|
|000026c0| 2e 0a 58 20 2a 0a 58 20 | 2a 20 20 20 20 20 20 20 |..X *.X |* |
|000026d0| 61 6e 67 6c 65 5f 65 6c | 6c 69 70 73 65 28 30 2c |angle_el|lipse(0,|
|000026e0| 30 2c 31 30 30 2c 32 30 | 2c 50 49 2f 34 29 20 20 |0,100,20|,PI/4) |
|000026f0| 20 20 20 20 20 20 20 61 | 6e 20 65 6c 6c 69 70 73 | a|n ellips|
|00002700| 65 20 61 74 20 74 68 65 | 20 6f 72 69 67 69 6e 2c |e at the| origin,|
|00002710| 0a 58 20 2a 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X * | |
|00002720| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002730| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002740| 20 6d 61 6a 6f 72 20 61 | 78 69 73 20 31 30 30 2c | major a|xis 100,|
|00002750| 20 6d 69 6e 6f 72 20 32 | 30 0a 58 20 2a 20 20 20 | minor 2|0.X * |
|00002760| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002770| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002780| 20 20 20 20 20 20 20 20 | 20 20 61 74 20 61 6e 67 | | at ang|
|00002790| 6c 65 20 34 35 20 64 65 | 67 72 65 65 73 2e 0a 58 |le 45 de|grees..X|
|000027a0| 20 2a 0a 58 20 2a 0a 58 | 20 2a 2f 0a 58 0a 58 0a | *.X *.X| */.X.X.|
|000027b0| 58 2f 2a 0a 58 20 2a 20 | 20 51 75 69 63 6b 45 6c |X/*.X * | QuickEl|
|000027c0| 6c 69 70 73 65 2c 20 75 | 73 65 73 20 74 68 65 20 |lipse, u|ses the |
|000027d0| 73 61 6d 65 20 6d 65 74 | 68 6f 64 20 61 73 20 45 |same met|hod as E|
|000027e0| 6c 6c 69 70 73 65 2c 20 | 62 75 74 20 75 73 65 73 |llipse, |but uses|
|000027f0| 20 69 6e 63 72 65 6d 65 | 6e 74 61 6c 0a 58 20 2a | increme|ntal.X *|
|00002800| 20 20 20 20 6d 65 74 68 | 6f 64 73 20 74 6f 20 72 | meth|ods to r|
|00002810| 65 64 75 63 65 20 74 68 | 65 20 61 6d 6f 75 6e 74 |educe th|e amount|
|00002820| 20 6f 66 20 77 6f 72 6b | 20 74 68 61 74 20 68 61 | of work| that ha|
|00002830| 73 20 74 6f 20 62 65 20 | 64 6f 6e 65 20 69 6e 73 |s to be |done ins|
|00002840| 69 64 65 0a 58 20 2a 20 | 20 20 20 74 68 65 20 6d |ide.X * | the m|
|00002850| 61 69 6e 20 6c 6f 6f 70 | 2e 20 54 68 65 20 73 70 |ain loop|. The sp|
|00002860| 65 65 64 20 69 6e 63 72 | 65 61 73 65 20 69 73 20 |eed incr|ease is |
|00002870| 76 65 72 79 20 6e 6f 74 | 69 63 65 61 62 6c 65 2e |very not|iceable.|
|00002880| 0a 58 20 2a 0a 58 20 2a | 20 20 57 72 69 74 74 65 |.X *.X *| Writte|
|00002890| 6e 20 62 79 20 4a 61 6d | 65 73 20 54 6f 75 67 68 |n by Jam|es Tough|
|000028a0| 0a 58 20 2a 20 20 37 74 | 68 20 4d 61 79 20 31 39 |.X * 7t|h May 19|
|000028b0| 39 32 0a 58 20 2a 20 0a | 58 20 2a 2f 0a 58 0a 58 |92.X * .|X */.X.X|
|000028c0| 73 74 61 74 69 63 20 69 | 6e 74 09 78 5b 4d 41 58 |static i|nt.x[MAX|
|000028d0| 4e 55 4d 50 54 53 2f 34 | 5d 5b 34 5d 2c 79 5b 4d |NUMPTS/4|][4],y[M|
|000028e0| 41 58 4e 55 4d 50 54 53 | 2f 34 5d 5b 34 5d 3b 0a |AXNUMPTS|/4][4];.|
|000028f0| 58 73 74 61 74 69 63 20 | 69 6e 74 09 6e 75 6d 70 |Xstatic |int.nump|
|00002900| 5b 34 5d 3b 0a 58 73 74 | 61 74 69 63 20 69 6e 74 |[4];.Xst|atic int|
|00002910| 09 74 6f 74 70 74 73 2c | 69 2c 6a 3b 0a 58 73 74 |.totpts,|i,j;.Xst|
|00002920| 61 74 69 63 20 69 6e 74 | 09 6f 72 64 65 72 5b 34 |atic int|.order[4|
|00002930| 5d 3d 7b 30 2c 31 2c 33 | 2c 32 7d 3b 0a 58 0a 58 |]={0,1,3|,2};.X.X|
|00002940| 61 6e 67 6c 65 5f 65 6c | 6c 69 70 73 65 28 63 65 |angle_el|lipse(ce|
|00002950| 6e 74 65 72 5f 78 2c 20 | 63 65 6e 74 65 72 5f 79 |nter_x, |center_y|
|00002960| 2c 20 72 61 64 69 75 73 | 5f 78 2c 20 72 61 64 69 |, radius|_x, radi|
|00002970| 75 73 5f 79 2c 20 61 6e | 67 6c 65 2c 0a 58 09 20 |us_y, an|gle,.X. |
|00002980| 20 20 20 20 20 6f 70 2c | 20 74 68 69 63 6b 6e 65 | op,| thickne|
|00002990| 73 73 2c 20 73 74 79 6c | 65 2c 20 73 74 79 6c 65 |ss, styl|e, style|
|000029a0| 5f 76 61 6c 2c 20 66 69 | 6c 6c 5f 73 74 79 6c 65 |_val, fi|ll_style|
|000029b0| 2c 20 63 6f 6c 6f 72 29 | 0a 58 20 20 20 20 69 6e |, color)|.X in|
|000029c0| 74 09 09 20 20 20 20 63 | 65 6e 74 65 72 5f 78 2c |t.. c|enter_x,|
|000029d0| 20 63 65 6e 74 65 72 5f | 79 3b 0a 58 20 20 20 20 | center_|y;.X |
|000029e0| 69 6e 74 09 09 20 20 20 | 20 72 61 64 69 75 73 5f |int.. | radius_|
|000029f0| 78 2c 20 72 61 64 69 75 | 73 5f 79 3b 0a 58 20 20 |x, radiu|s_y;.X |
|00002a00| 20 20 66 6c 6f 61 74 09 | 20 20 20 20 61 6e 67 6c | float.| angl|
|00002a10| 65 3b 0a 58 20 20 20 20 | 69 6e 74 09 09 20 20 20 |e;.X |int.. |
|00002a20| 20 6f 70 2c 74 68 69 63 | 6b 6e 65 73 73 2c 73 74 | op,thic|kness,st|
|00002a30| 79 6c 65 2c 66 69 6c 6c | 5f 73 74 79 6c 65 2c 63 |yle,fill|_style,c|
|00002a40| 6f 6c 6f 72 3b 0a 58 20 | 20 20 20 66 6c 6f 61 74 |olor;.X | float|
|00002a50| 09 20 20 20 20 73 74 79 | 6c 65 5f 76 61 6c 3b 0a |. sty|le_val;.|
|00002a60| 58 7b 0a 58 09 66 6c 6f | 61 74 09 78 63 65 6e 2c |X{.X.flo|at.xcen,|
|00002a70| 20 79 63 65 6e 2c 20 61 | 2c 20 62 3b 20 0a 58 0a | ycen, a|, b; .X.|
|00002a80| 58 09 64 6f 75 62 6c 65 | 09 63 31 2c 20 63 32 2c |X.double|.c1, c2,|
|00002a90| 20 63 33 2c 20 63 34 2c | 20 63 35 2c 20 63 36 2c | c3, c4,| c5, c6,|
|00002aa0| 20 76 31 2c 20 63 70 68 | 69 2c 20 73 70 68 69 2c | v1, cph|i, sphi,|
|00002ab0| 20 63 70 68 69 73 71 72 | 2c 20 73 70 68 69 73 71 | cphisqr|, sphisq|
|00002ac0| 72 3b 0a 58 09 64 6f 75 | 62 6c 65 09 78 6c 65 66 |r;.X.dou|ble.xlef|
|00002ad0| 74 2c 20 78 72 69 67 68 | 74 2c 20 64 2c 20 61 73 |t, xrigh|t, d, as|
|00002ae0| 71 72 2c 20 62 73 71 72 | 3b 0a 58 09 69 6e 74 09 |qr, bsqr|;.X.int.|
|00002af0| 79 6d 61 78 2c 20 79 79 | 3d 30 3b 0a 58 09 69 6e |ymax, yy|=0;.X.in|
|00002b00| 74 09 6b 2c 6d 2c 64 69 | 72 3b 0a 58 09 66 6c 6f |t.k,m,di|r;.X.flo|
|00002b10| 61 74 09 73 61 76 65 7a | 6f 6f 6d 2c 20 73 61 76 |at.savez|oom, sav|
|00002b20| 65 78 6f 66 66 2c 20 73 | 61 76 65 79 6f 66 66 3b |exoff, s|aveyoff;|
|00002b30| 0a 58 09 69 6e 74 09 7a | 6f 6f 6d 74 68 69 63 6b |.X.int.z|oomthick|
|00002b40| 3b 0a 58 09 58 50 6f 69 | 6e 74 09 2a 69 70 6e 74 |;.X.XPoi|nt.*ipnt|
|00002b50| 73 3b 0a 58 0a 58 09 2f | 2a 20 63 6c 65 61 72 20 |s;.X.X./|* clear |
|00002b60| 61 6e 79 20 70 72 65 76 | 69 6f 75 73 20 65 72 72 |any prev|ious err|
|00002b70| 6f 72 20 6d 65 73 73 61 | 67 65 20 2a 2f 0a 58 09 |or messa|ge */.X.|
|00002b80| 70 75 74 5f 6d 73 67 28 | 22 22 29 3b 0a 58 09 69 |put_msg(|"");.X.i|
|00002b90| 66 20 28 72 61 64 69 75 | 73 5f 78 20 3d 3d 20 30 |f (radiu|s_x == 0|
|00002ba0| 20 7c 7c 20 72 61 64 69 | 75 73 5f 79 20 3d 3d 20 | || radi|us_y == |
|00002bb0| 30 29 0a 58 09 09 72 65 | 74 75 72 6e 3b 0a 58 0a |0).X..re|turn;.X.|
|00002bc0| 58 09 2f 2a 20 61 64 6a | 75 73 74 20 66 6f 72 20 |X./* adj|ust for |
|00002bd0| 7a 6f 6f 6d 73 63 61 6c | 65 20 73 6f 20 77 65 20 |zoomscal|e so we |
|00002be0| 69 74 65 72 61 74 65 20 | 6f 76 65 72 20 7a 6f 6f |iterate |over zoo|
|00002bf0| 6d 65 64 20 70 69 78 65 | 6c 73 20 2a 2f 0a 58 09 |med pixe|ls */.X.|
|00002c00| 78 63 65 6e 20 3d 20 5a | 4f 4f 4d 58 28 63 65 6e |xcen = Z|OOMX(cen|
|00002c10| 74 65 72 5f 78 29 3b 0a | 58 09 79 63 65 6e 20 3d |ter_x);.|X.ycen =|
|00002c20| 20 5a 4f 4f 4d 59 28 63 | 65 6e 74 65 72 5f 79 29 | ZOOMY(c|enter_y)|
|00002c30| 3b 0a 58 09 61 20 3d 20 | 72 61 64 69 75 73 5f 78 |;.X.a = |radius_x|
|00002c40| 2a 7a 6f 6f 6d 73 63 61 | 6c 65 3b 0a 58 09 62 20 |*zoomsca|le;.X.b |
|00002c50| 3d 20 72 61 64 69 75 73 | 5f 79 2a 7a 6f 6f 6d 73 |= radius|_y*zooms|
|00002c60| 63 61 6c 65 3b 0a 58 09 | 7a 6f 6f 6d 74 68 69 63 |cale;.X.|zoomthic|
|00002c70| 6b 20 3d 20 72 6f 75 6e | 64 28 7a 6f 6f 6d 73 63 |k = roun|d(zoomsc|
|00002c80| 61 6c 65 2a 74 68 69 63 | 6b 6e 65 73 73 29 3b 0a |ale*thic|kness);.|
|00002c90| 58 09 69 66 20 28 7a 6f | 6f 6d 74 68 69 63 6b 20 |X.if (zo|omthick |
|00002ca0| 3d 3d 20 30 20 26 26 20 | 74 68 69 63 6b 6e 65 73 |== 0 && |thicknes|
|00002cb0| 73 20 21 3d 20 30 29 0a | 58 09 09 7a 6f 6f 6d 74 |s != 0).|X..zoomt|
|00002cc0| 68 69 63 6b 3d 31 3b 0a | 58 09 73 61 76 65 7a 6f |hick=1;.|X.savezo|
|00002cd0| 6f 6d 20 3d 20 7a 6f 6f | 6d 73 63 61 6c 65 3b 0a |om = zoo|mscale;.|
|00002ce0| 58 09 73 61 76 65 78 6f | 66 66 20 3d 20 7a 6f 6f |X.savexo|ff = zoo|
|00002cf0| 6d 78 6f 66 66 3b 0a 58 | 09 73 61 76 65 79 6f 66 |mxoff;.X|.saveyof|
|00002d00| 66 20 3d 20 7a 6f 6f 6d | 79 6f 66 66 3b 0a 58 09 |f = zoom|yoff;.X.|
|00002d10| 7a 6f 6f 6d 73 63 61 6c | 65 20 3d 20 31 2e 30 3b |zoomscal|e = 1.0;|
|00002d20| 0a 58 09 7a 6f 6f 6d 78 | 6f 66 66 20 3d 20 7a 6f |.X.zoomx|off = zo|
|00002d30| 6f 6d 79 6f 66 66 20 3d | 20 30 2e 30 3b 0a 58 0a |omyoff =| 0.0;.X.|
|00002d40| 58 09 63 70 68 69 20 3d | 20 63 6f 73 28 28 64 6f |X.cphi =| cos((do|
|00002d50| 75 62 6c 65 29 61 6e 67 | 6c 65 29 3b 0a 58 09 73 |uble)ang|le);.X.s|
|00002d60| 70 68 69 20 3d 20 73 69 | 6e 28 28 64 6f 75 62 6c |phi = si|n((doubl|
|00002d70| 65 29 61 6e 67 6c 65 29 | 3b 0a 58 09 63 70 68 69 |e)angle)|;.X.cphi|
|00002d80| 73 71 72 20 3d 20 63 70 | 68 69 2a 63 70 68 69 3b |sqr = cp|hi*cphi;|
|00002d90| 0a 58 09 73 70 68 69 73 | 71 72 20 3d 20 73 70 68 |.X.sphis|qr = sph|
|00002da0| 69 2a 73 70 68 69 3b 0a | 58 09 61 73 71 72 20 3d |i*sphi;.|X.asqr =|
|00002db0| 20 61 2a 61 3b 0a 58 09 | 62 73 71 72 20 3d 20 62 | a*a;.X.|bsqr = b|
|00002dc0| 2a 62 3b 0a 58 09 0a 58 | 09 63 31 20 3d 20 28 63 |*b;.X..X|.c1 = (c|
|00002dd0| 70 68 69 73 71 72 2f 61 | 73 71 72 29 2b 28 73 70 |phisqr/a|sqr)+(sp|
|00002de0| 68 69 73 71 72 2f 62 73 | 71 72 29 3b 0a 58 09 63 |hisqr/bs|qr);.X.c|
|00002df0| 32 20 3d 20 28 28 63 70 | 68 69 2a 73 70 68 69 2f |2 = ((cp|hi*sphi/|
|00002e00| 61 73 71 72 29 2d 28 63 | 70 68 69 2a 73 70 68 69 |asqr)-(c|phi*sphi|
|00002e10| 2f 62 73 71 72 29 29 2f | 63 31 3b 0a 58 09 63 33 |/bsqr))/|c1;.X.c3|
|00002e20| 20 3d 20 28 62 73 71 72 | 2a 63 70 68 69 73 71 72 | = (bsqr|*cphisqr|
|00002e30| 29 20 2b 20 28 61 73 71 | 72 2a 73 70 68 69 73 71 |) + (asq|r*sphisq|
|00002e40| 72 29 3b 0a 58 09 79 6d | 61 78 20 3d 20 73 71 72 |r);.X.ym|ax = sqr|
|00002e50| 74 28 63 33 29 3b 0a 58 | 09 63 34 20 3d 20 61 2a |t(c3);.X|.c4 = a*|
|00002e60| 62 2f 63 33 3b 0a 58 09 | 63 35 20 3d 20 30 3b 0a |b/c3;.X.|c5 = 0;.|
|00002e70| 58 09 76 31 20 3d 20 63 | 34 2a 63 34 3b 0a 58 09 |X.v1 = c|4*c4;.X.|
|00002e80| 63 36 20 3d 20 32 2a 76 | 31 3b 0a 58 09 63 33 20 |c6 = 2*v|1;.X.c3 |
|00002e90| 3d 20 63 33 2a 76 31 2d | 76 31 3b 0a 58 09 74 6f |= c3*v1-|v1;.X.to|
|00002ea0| 74 70 74 73 20 3d 20 30 | 3b 0a 58 09 66 6f 72 20 |tpts = 0|;.X.for |
|00002eb0| 28 69 3d 30 3b 20 69 3c | 3d 33 3b 20 69 2b 2b 29 |(i=0; i<|=3; i++)|
|00002ec0| 0a 58 09 09 6e 75 6d 70 | 5b 69 5d 3d 30 3b 0a 58 |.X..nump|[i]=0;.X|
|00002ed0| 09 69 3d 30 3b 20 6a 3d | 30 3b 0a 58 09 2f 2a 20 |.i=0; j=|0;.X./* |
|00002ee0| 6f 64 64 20 66 69 72 73 | 74 20 70 6f 69 6e 74 73 |odd firs|t points|
|00002ef0| 20 2a 2f 0a 58 09 69 66 | 20 28 79 6d 61 78 20 25 | */.X.if| (ymax %|
|00002f00| 20 32 29 20 7b 0a 58 09 | 09 64 20 3d 20 73 71 72 | 2) {.X.|.d = sqr|
|00002f10| 74 28 63 33 29 3b 0a 58 | 09 09 6e 65 77 70 6f 69 |t(c3);.X|..newpoi|
|00002f20| 6e 74 28 78 63 65 6e 2d | 64 2c 79 63 65 6e 29 3b |nt(xcen-|d,ycen);|
|00002f30| 0a 58 09 09 6e 65 77 70 | 6f 69 6e 74 28 78 63 65 |.X..newp|oint(xce|
|00002f40| 6e 2b 64 2c 79 63 65 6e | 29 3b 0a 58 09 09 63 35 |n+d,ycen|);.X..c5|
|00002f50| 20 3d 20 63 32 3b 0a 58 | 09 09 79 79 3d 31 3b 0a | = c2;.X|..yy=1;.|
|00002f60| 58 09 7d 0a 58 09 77 68 | 69 6c 65 20 28 63 33 3e |X.}.X.wh|ile (c3>|
|00002f70| 3d 30 29 20 7b 0a 58 09 | 09 64 20 3d 20 73 71 72 |=0) {.X.|.d = sqr|
|00002f80| 74 28 63 33 29 3b 0a 58 | 09 09 78 6c 65 66 74 20 |t(c3);.X|..xleft |
|00002f90| 3d 20 63 35 2d 64 3b 0a | 58 09 09 78 72 69 67 68 |= c5-d;.|X..xrigh|
|00002fa0| 74 20 3d 20 63 35 2b 64 | 3b 20 20 20 20 20 20 20 |t = c5+d|; |
|00002fb0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002fc0| 20 0a 58 09 09 6e 65 77 | 70 6f 69 6e 74 28 78 63 | .X..new|point(xc|
|00002fd0| 65 6e 2b 78 6c 65 66 74 | 2c 79 63 65 6e 2b 79 79 |en+xleft|,ycen+yy|
|00002fe0| 29 3b 0a 58 09 09 6e 65 | 77 70 6f 69 6e 74 28 78 |);.X..ne|wpoint(x|
|00002ff0| 63 65 6e 2b 78 72 69 67 | 68 74 2c 79 63 65 6e 2b |cen+xrig|ht,ycen+|
|00003000| 79 79 29 3b 0a 58 09 09 | 6e 65 77 70 6f 69 6e 74 |yy);.X..|newpoint|
|00003010| 28 78 63 65 6e 2d 78 72 | 69 67 68 74 2c 79 63 65 |(xcen-xr|ight,yce|
|00003020| 6e 2d 79 79 29 3b 0a 58 | 09 09 6e 65 77 70 6f 69 |n-yy);.X|..newpoi|
|00003030| 6e 74 28 78 63 65 6e 2d | 78 6c 65 66 74 2c 79 63 |nt(xcen-|xleft,yc|
|00003040| 65 6e 2d 79 79 29 3b 0a | 58 09 09 63 35 2b 3d 63 |en-yy);.|X..c5+=c|
|00003050| 32 3b 0a 58 09 09 76 31 | 2b 3d 63 36 3b 0a 58 09 |2;.X..v1|+=c6;.X.|
|00003060| 09 63 33 2d 3d 76 31 3b | 0a 58 09 09 79 79 3d 79 |.c3-=v1;|.X..yy=y|
|00003070| 79 2b 31 3b 0a 58 09 7d | 0a 58 09 64 69 72 3d 30 |y+1;.X.}|.X.dir=0|
|00003080| 3b 0a 58 09 74 6f 74 70 | 74 73 2b 2b 3b 09 2f 2a |;.X.totp|ts++;./*|
|00003090| 20 61 64 64 20 61 6e 6f | 74 68 65 72 20 70 6f 69 | add ano|ther poi|
|000030a0| 6e 74 20 74 6f 20 6a 6f | 69 6e 20 77 69 74 68 20 |nt to jo|in with |
|000030b0| 66 69 72 73 74 20 2a 2f | 0a 58 09 69 6e 69 74 5f |first */|.X.init_|
|000030c0| 70 6f 69 6e 74 5f 61 72 | 72 61 79 28 74 6f 74 70 |point_ar|ray(totp|
|000030d0| 74 73 2c 20 30 29 3b 0a | 58 09 69 70 6e 74 73 20 |ts, 0);.|X.ipnts |
|000030e0| 3d 20 70 6f 69 6e 74 73 | 3b 0a 58 09 2f 2a 20 6e |= points|;.X./* n|
|000030f0| 6f 77 20 67 6f 20 64 6f | 77 6e 20 74 68 65 20 31 |ow go do|wn the 1|
|00003100| 73 74 20 63 6f 6c 75 6d | 6e 2c 20 75 70 20 74 68 |st colum|n, up th|
|00003110| 65 20 32 6e 64 2c 20 64 | 6f 77 6e 20 74 68 65 20 |e 2nd, d|own the |
|00003120| 34 74 68 20 0a 58 09 20 | 20 20 61 6e 64 20 75 70 |4th .X. | and up|
|00003130| 20 74 68 65 20 33 72 64 | 20 74 6f 20 67 65 74 20 | the 3rd| to get |
|00003140| 74 68 65 20 70 6f 69 6e | 74 73 20 69 6e 20 74 68 |the poin|ts in th|
|00003150| 65 20 63 6f 72 72 65 63 | 74 20 6f 72 64 65 72 20 |e correc|t order |
|00003160| 2a 2f 0a 58 09 66 6f 72 | 20 28 6b 3d 30 3b 20 6b |*/.X.for| (k=0; k|
|00003170| 3c 3d 33 3b 20 6b 2b 2b | 29 20 7b 0a 58 09 20 20 |<=3; k++|) {.X. |
|00003180| 20 20 69 66 20 28 64 69 | 72 3d 3d 30 29 0a 58 09 | if (di|r==0).X.|
|00003190| 09 66 6f 72 20 28 6d 3d | 30 3b 20 6d 3c 6e 75 6d |.for (m=|0; m<num|
|000031a0| 70 5b 6b 5d 3b 20 6d 2b | 2b 29 20 7b 0a 58 09 09 |p[k]; m+|+) {.X..|
|000031b0| 20 20 20 20 61 64 64 5f | 70 6f 69 6e 74 28 78 5b | add_|point(x[|
|000031c0| 6d 5d 5b 6f 72 64 65 72 | 5b 6b 5d 5d 2c 79 5b 6d |m][order|[k]],y[m|
|000031d0| 5d 5b 6f 72 64 65 72 5b | 6b 5d 5d 29 3b 0a 58 09 |][order[|k]]);.X.|
|000031e0| 09 7d 0a 58 09 20 20 20 | 20 65 6c 73 65 0a 58 09 |.}.X. | else.X.|
|000031f0| 09 66 6f 72 20 28 6d 3d | 6e 75 6d 70 5b 6b 5d 2d |.for (m=|nump[k]-|
|00003200| 31 3b 20 6d 3e 3d 30 3b | 20 6d 2d 2d 29 20 7b 0a |1; m>=0;| m--) {.|
|00003210| 58 09 09 20 20 20 20 61 | 64 64 5f 70 6f 69 6e 74 |X.. a|dd_point|
|00003220| 28 78 5b 6d 5d 5b 6f 72 | 64 65 72 5b 6b 5d 5d 2c |(x[m][or|der[k]],|
|00003230| 79 5b 6d 5d 5b 6f 72 64 | 65 72 5b 6b 5d 5d 29 3b |y[m][ord|er[k]]);|
|00003240| 0a 58 09 09 7d 0a 58 09 | 20 20 20 20 64 69 72 20 |.X..}.X.| dir |
|00003250| 3d 20 31 2d 64 69 72 3b | 0a 58 09 7d 20 2f 2a 20 |= 1-dir;|.X.} /* |
|00003260| 6e 65 78 74 20 6b 20 2a | 2f 0a 58 09 2f 2a 20 61 |next k *|/.X./* a|
|00003270| 64 64 20 61 6e 6f 74 68 | 65 72 20 70 6f 69 6e 74 |dd anoth|er point|
|00003280| 20 74 6f 20 6a 6f 69 6e | 20 77 69 74 68 20 66 69 | to join| with fi|
|00003290| 72 73 74 20 2a 2f 0a 58 | 09 61 64 64 5f 70 6f 69 |rst */.X|.add_poi|
|000032a0| 6e 74 28 69 70 6e 74 73 | 2d 3e 78 2c 69 70 6e 74 |nt(ipnts|->x,ipnt|
|000032b0| 73 2d 3e 79 29 3b 0a 58 | 09 64 72 61 77 5f 70 6f |s->y);.X|.draw_po|
|000032c0| 69 6e 74 5f 61 72 72 61 | 79 28 63 61 6e 76 61 73 |int_arra|y(canvas|
|000032d0| 5f 77 69 6e 2c 20 6f 70 | 2c 20 7a 6f 6f 6d 74 68 |_win, op|, zoomth|
|000032e0| 69 63 6b 2c 20 73 74 79 | 6c 65 2c 20 73 74 79 6c |ick, sty|le, styl|
|000032f0| 65 5f 76 61 6c 2c 20 0a | 58 09 09 20 66 69 6c 6c |e_val, .|X.. fill|
|00003300| 5f 73 74 79 6c 65 2c 20 | 63 6f 6c 6f 72 29 3b 0a |_style, |color);.|
|00003310| 58 0a 58 09 7a 6f 6f 6d | 73 63 61 6c 65 20 3d 20 |X.X.zoom|scale = |
|00003320| 73 61 76 65 7a 6f 6f 6d | 3b 0a 58 09 7a 6f 6f 6d |savezoom|;.X.zoom|
|00003330| 78 6f 66 66 20 3d 20 73 | 61 76 65 78 6f 66 66 3b |xoff = s|avexoff;|
|00003340| 0a 58 09 7a 6f 6f 6d 79 | 6f 66 66 20 3d 20 73 61 |.X.zoomy|off = sa|
|00003350| 76 65 79 6f 66 66 3b 0a | 58 09 72 65 74 75 72 6e |veyoff;.|X.return|
|00003360| 3b 0a 58 7d 0a 58 0a 58 | 2f 2a 20 73 74 6f 72 65 |;.X}.X.X|/* store|
|00003370| 20 74 68 65 20 70 6f 69 | 6e 74 73 20 61 63 72 6f | the poi|nts acro|
|00003380| 73 73 20 28 72 6f 77 2d | 77 69 73 65 20 69 6e 29 |ss (row-|wise in)|
|00003390| 20 74 68 65 20 6d 61 74 | 72 69 78 20 2a 2f 0a 58 | the mat|rix */.X|
|000033a0| 0a 58 6e 65 77 70 6f 69 | 6e 74 28 78 70 2c 79 70 |.Xnewpoi|nt(xp,yp|
|000033b0| 29 0a 58 20 20 20 20 66 | 6c 6f 61 74 09 20 20 20 |).X f|loat. |
|000033c0| 78 70 2c 79 70 3b 0a 58 | 7b 0a 58 20 20 20 20 69 |xp,yp;.X|{.X i|
|000033d0| 66 20 28 74 6f 74 70 74 | 73 20 3e 3d 20 4d 41 58 |f (totpt|s >= MAX|
|000033e0| 4e 55 4d 50 54 53 2f 34 | 29 20 7b 0a 58 09 69 66 |NUMPTS/4|) {.X.if|
|000033f0| 20 28 74 6f 74 70 74 73 | 20 3d 3d 20 4d 41 58 4e | (totpts| == MAXN|
|00003400| 55 4d 50 54 53 2f 34 29 | 20 7b 0a 58 09 20 20 20 |UMPTS/4)| {.X. |
|00003410| 20 70 75 74 5f 6d 73 67 | 28 22 54 6f 6f 20 6d 61 | put_msg|("Too ma|
|00003420| 6e 79 20 70 6f 69 6e 74 | 73 20 74 6f 20 66 75 6c |ny point|s to ful|
|00003430| 6c 79 20 64 69 73 70 6c | 61 79 20 72 6f 74 61 74 |ly displ|ay rotat|
|00003440| 65 64 20 65 6c 6c 69 70 | 73 65 2e 20 25 64 20 70 |ed ellip|se. %d p|
|00003450| 6f 69 6e 74 73 20 6d 61 | 78 22 2c 0a 58 09 09 4d |oints ma|x",.X..M|
|00003460| 41 58 4e 55 4d 50 54 53 | 29 3b 0a 58 09 20 20 20 |AXNUMPTS|);.X. |
|00003470| 20 74 6f 74 70 74 73 2b | 2b 3b 0a 58 09 7d 0a 58 | totpts+|+;.X.}.X|
|00003480| 09 72 65 74 75 72 6e 3b | 0a 58 20 20 20 20 7d 0a |.return;|.X }.|
|00003490| 58 20 20 20 20 78 5b 69 | 5d 5b 6a 5d 3d 72 6f 75 |X x[i|][j]=rou|
|000034a0| 6e 64 28 78 70 29 3b 0a | 58 20 20 20 20 79 5b 69 |nd(xp);.|X y[i|
|000034b0| 5d 5b 6a 5d 3d 72 6f 75 | 6e 64 28 79 70 29 3b 0a |][j]=rou|nd(yp);.|
|000034c0| 58 20 20 20 20 6e 75 6d | 70 5b 6a 5d 2b 2b 3b 0a |X num|p[j]++;.|
|000034d0| 58 20 20 20 20 74 6f 74 | 70 74 73 2b 2b 3b 0a 58 |X tot|pts++;.X|
|000034e0| 20 20 20 20 69 66 20 28 | 2b 2b 6a 20 3e 20 33 29 | if (|++j > 3)|
|000034f0| 20 7b 0a 58 09 6a 3d 30 | 3b 20 0a 58 09 69 2b 2b | {.X.j=0|; .X.i++|
|00003500| 3b 0a 58 20 20 20 20 7d | 0a 58 7d 0a 58 0a 58 0a |;.X }|.X}.X.X.|
|00003510| 58 2f 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X/******|********|
|00003520| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 20 4c 49 4e 45 20 2a |********|* LINE *|
|00003530| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003540| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2f 0a 58 0a 58 64 |********|**/.X.Xd|
|00003550| 72 61 77 5f 6c 69 6e 65 | 28 6c 69 6e 65 2c 20 6f |raw_line|(line, o|
|00003560| 70 29 0a 58 20 20 20 20 | 46 5f 6c 69 6e 65 09 20 |p).X |F_line. |
|00003570| 20 20 2a 6c 69 6e 65 3b | 0a 58 20 20 20 20 69 6e | *line;|.X in|
|00003580| 74 09 09 20 20 20 20 6f | 70 3b 0a 58 7b 0a 58 20 |t.. o|p;.X{.X |
|00003590| 20 20 20 46 5f 70 6f 69 | 6e 74 09 20 20 20 2a 70 | F_poi|nt. *p|
|000035a0| 6f 69 6e 74 3b 0a 58 20 | 20 20 20 69 6e 74 09 09 |oint;.X | int..|
|000035b0| 20 20 20 20 78 78 2c 20 | 79 79 2c 20 78 2c 20 79 | xx, |yy, x, y|
|000035c0| 3b 0a 58 20 20 20 20 69 | 6e 74 09 09 20 20 20 20 |;.X i|nt.. |
|000035d0| 78 6d 69 6e 2c 20 79 6d | 69 6e 2c 20 78 6d 61 78 |xmin, ym|in, xmax|
|000035e0| 2c 20 79 6d 61 78 3b 0a | 58 20 20 20 20 63 68 61 |, ymax;.|X cha|
|000035f0| 72 09 20 20 20 2a 73 74 | 72 69 6e 67 3b 0a 58 20 |r. *st|ring;.X |
|00003600| 20 20 20 46 5f 70 6f 69 | 6e 74 09 20 20 20 2a 70 | F_poi|nt. *p|
|00003610| 30 2c 20 2a 70 31 2c 20 | 2a 70 32 3b 0a 58 20 20 |0, *p1, |*p2;.X |
|00003620| 20 20 70 72 5f 73 69 7a | 65 09 20 20 20 20 74 78 | pr_siz|e. tx|
|00003630| 74 3b 0a 58 0a 58 20 20 | 20 20 6c 69 6e 65 5f 62 |t;.X.X | line_b|
|00003640| 6f 75 6e 64 28 6c 69 6e | 65 2c 20 26 78 6d 69 6e |ound(lin|e, &xmin|
|00003650| 2c 20 26 79 6d 69 6e 2c | 20 26 78 6d 61 78 2c 20 |, &ymin,| &xmax, |
|00003660| 26 79 6d 61 78 29 3b 0a | 58 20 20 20 20 69 66 20 |&ymax);.|X if |
|00003670| 28 21 6f 76 65 72 6c 61 | 70 70 69 6e 67 28 5a 4f |(!overla|pping(ZO|
|00003680| 4f 4d 58 28 78 6d 69 6e | 29 2c 20 5a 4f 4f 4d 59 |OMX(xmin|), ZOOMY|
|00003690| 28 79 6d 69 6e 29 2c 20 | 5a 4f 4f 4d 58 28 78 6d |(ymin), |ZOOMX(xm|
|000036a0| 61 78 29 2c 20 5a 4f 4f | 4d 59 28 79 6d 61 78 29 |ax), ZOO|MY(ymax)|
|000036b0| 2c 0a 58 09 09 20 20 20 | 20 20 63 6c 69 70 5f 78 |,.X.. | clip_x|
|000036c0| 6d 69 6e 2c 20 63 6c 69 | 70 5f 79 6d 69 6e 2c 20 |min, cli|p_ymin, |
|000036d0| 63 6c 69 70 5f 78 6d 61 | 78 2c 20 63 6c 69 70 5f |clip_xma|x, clip_|
|000036e0| 79 6d 61 78 29 29 0a 58 | 09 72 65 74 75 72 6e 3b |ymax)).X|.return;|
|000036f0| 0a 58 0a 58 20 20 20 20 | 2f 2a 20 69 73 20 69 74 |.X.X |/* is it|
|00003700| 20 61 6e 20 61 72 63 62 | 6f 78 3f 20 2a 2f 0a 58 | an arcb|ox? */.X|
|00003710| 20 20 20 20 69 66 20 28 | 6c 69 6e 65 2d 3e 74 79 | if (|line->ty|
|00003720| 70 65 20 3d 3d 20 54 5f | 41 52 43 5f 42 4f 58 29 |pe == T_|ARC_BOX)|
|00003730| 20 7b 0a 58 09 64 72 61 | 77 5f 61 72 63 62 6f 78 | {.X.dra|w_arcbox|
|00003740| 28 6c 69 6e 65 2c 20 6f | 70 29 3b 0a 58 09 72 65 |(line, o|p);.X.re|
|00003750| 74 75 72 6e 3b 0a 58 20 | 20 20 20 7d 0a 58 20 20 |turn;.X | }.X |
|00003760| 20 20 2f 2a 20 69 73 20 | 69 74 20 61 6e 20 65 70 | /* is |it an ep|
|00003770| 73 20 66 69 6c 65 3f 20 | 2a 2f 0a 58 20 20 20 20 |s file? |*/.X |
|00003780| 69 66 20 28 6c 69 6e 65 | 2d 3e 74 79 70 65 20 3d |if (line|->type =|
|00003790| 3d 20 54 5f 45 50 53 5f | 42 4f 58 29 20 7b 0a 58 |= T_EPS_|BOX) {.X|
|000037a0| 09 69 66 20 28 6c 69 6e | 65 2d 3e 65 70 73 2d 3e |.if (lin|e->eps->|
|000037b0| 62 69 74 6d 61 70 20 21 | 3d 20 4e 55 4c 4c 29 20 |bitmap !|= NULL) |
|000037c0| 7b 0a 58 09 20 20 20 20 | 64 72 61 77 5f 65 70 73 |{.X. |draw_eps|
|000037d0| 5f 70 69 78 6d 61 70 28 | 6c 69 6e 65 2c 20 6f 70 |_pixmap(|line, op|
|000037e0| 29 3b 0a 58 09 20 20 20 | 20 72 65 74 75 72 6e 3b |);.X. | return;|
|000037f0| 0a 58 09 7d 20 65 6c 73 | 65 20 7b 09 09 2f 2a 20 |.X.} els|e {../* |
|00003800| 6c 61 62 65 6c 20 65 6d | 70 74 79 20 65 70 73 20 |label em|pty eps |
|00003810| 62 6f 75 6e 64 69 6e 67 | 20 62 6f 78 20 2a 2f 0a |bounding| box */.|
|00003820| 58 09 20 20 20 20 69 66 | 20 28 6c 69 6e 65 2d 3e |X. if| (line->|
|00003830| 65 70 73 2d 3e 66 69 6c | 65 5b 30 5d 20 3d 3d 20 |eps->fil|e[0] == |
|00003840| 27 5c 30 27 29 0a 58 09 | 09 73 74 72 69 6e 67 20 |'\0').X.|.string |
|00003850| 3d 20 45 4d 50 54 59 5f | 45 50 53 3b 0a 58 09 20 |= EMPTY_|EPS;.X. |
|00003860| 20 20 20 65 6c 73 65 20 | 7b 0a 58 09 09 73 74 72 | else |{.X..str|
|00003870| 69 6e 67 20 3d 20 72 69 | 6e 64 65 78 28 6c 69 6e |ing = ri|ndex(lin|
|00003880| 65 2d 3e 65 70 73 2d 3e | 66 69 6c 65 2c 20 27 2f |e->eps->|file, '/|
|00003890| 27 29 3b 0a 58 09 09 69 | 66 20 28 73 74 72 69 6e |');.X..i|f (strin|
|000038a0| 67 20 3d 3d 20 4e 55 4c | 4c 29 0a 58 09 09 20 20 |g == NUL|L).X.. |
|000038b0| 20 20 73 74 72 69 6e 67 | 20 3d 20 6c 69 6e 65 2d | string| = line-|
|000038c0| 3e 65 70 73 2d 3e 66 69 | 6c 65 3b 0a 58 09 09 65 |>eps->fi|le;.X..e|
|000038d0| 6c 73 65 0a 58 09 09 20 | 20 20 20 73 74 72 69 6e |lse.X.. | strin|
|000038e0| 67 2b 2b 3b 0a 58 09 20 | 20 20 20 7d 0a 58 09 20 |g++;.X. | }.X. |
|000038f0| 20 20 20 70 30 20 3d 20 | 6c 69 6e 65 2d 3e 70 6f | p0 = |line->po|
|00003900| 69 6e 74 73 3b 0a 58 09 | 20 20 20 20 70 31 20 3d |ints;.X.| p1 =|
|00003910| 20 70 30 2d 3e 6e 65 78 | 74 3b 0a 58 09 20 20 20 | p0->nex|t;.X. |
|00003920| 20 70 32 20 3d 20 70 31 | 2d 3e 6e 65 78 74 3b 0a | p2 = p1|->next;.|
|00003930| 58 09 20 20 20 20 78 6d | 69 6e 20 3d 20 6d 69 6e |X. xm|in = min|
|00003940| 33 28 70 30 2d 3e 78 2c | 20 70 31 2d 3e 78 2c 20 |3(p0->x,| p1->x, |
|00003950| 70 32 2d 3e 78 29 3b 0a | 58 09 20 20 20 20 79 6d |p2->x);.|X. ym|
|00003960| 69 6e 20 3d 20 6d 69 6e | 33 28 70 30 2d 3e 79 2c |in = min|3(p0->y,|
|00003970| 20 70 31 2d 3e 79 2c 20 | 70 32 2d 3e 79 29 3b 0a | p1->y, |p2->y);.|
|00003980| 58 09 20 20 20 20 78 6d | 61 78 20 3d 20 6d 61 78 |X. xm|ax = max|
|00003990| 33 28 70 30 2d 3e 78 2c | 20 70 31 2d 3e 78 2c 20 |3(p0->x,| p1->x, |
|000039a0| 70 32 2d 3e 78 29 3b 0a | 58 09 20 20 20 20 79 6d |p2->x);.|X. ym|
|000039b0| 61 78 20 3d 20 6d 61 78 | 33 28 70 30 2d 3e 79 2c |ax = max|3(p0->y,|
|000039c0| 20 70 31 2d 3e 79 2c 20 | 70 32 2d 3e 79 29 3b 0a | p1->y, |p2->y);.|
|000039d0| 58 09 20 20 20 20 63 61 | 6e 76 61 73 5f 66 6f 6e |X. ca|nvas_fon|
|000039e0| 74 20 3d 20 6c 6f 6f 6b | 66 6f 6e 74 28 30 2c 20 |t = look|font(0, |
|000039f0| 31 32 2c 20 30 2e 30 29 | 3b 09 2f 2a 20 67 65 74 |12, 0.0)|;./* get|
|00003a00| 20 61 20 73 69 7a 65 20 | 31 32 20 66 6f 6e 74 20 | a size |12 font |
|00003a10| 2a 2f 0a 58 09 20 20 20 | 20 74 78 74 20 3d 20 70 |*/.X. | txt = p|
|00003a20| 66 5f 74 65 78 74 77 69 | 64 74 68 28 63 61 6e 76 |f_textwi|dth(canv|
|00003a30| 61 73 5f 66 6f 6e 74 2c | 20 73 74 72 6c 65 6e 28 |as_font,| strlen(|
|00003a40| 73 74 72 69 6e 67 29 2c | 20 73 74 72 69 6e 67 29 |string),| string)|
|00003a50| 3b 0a 58 09 20 20 20 20 | 78 20 3d 20 28 78 6d 69 |;.X. |x = (xmi|
|00003a60| 6e 20 2b 20 78 6d 61 78 | 29 20 2f 20 32 20 2d 20 |n + xmax|) / 2 - |
|00003a70| 74 78 74 2e 78 20 2f 20 | 32 3b 0a 58 09 20 20 20 |txt.x / |2;.X. |
|00003a80| 20 79 20 3d 20 28 79 6d | 69 6e 20 2b 20 79 6d 61 | y = (ym|in + yma|
|00003a90| 78 29 20 2f 20 32 3b 0a | 58 09 20 20 20 20 70 77 |x) / 2;.|X. pw|
|00003aa0| 5f 74 65 78 74 28 63 61 | 6e 76 61 73 5f 77 69 6e |_text(ca|nvas_win|
|00003ab0| 2c 20 78 2c 20 79 2c 20 | 6f 70 2c 20 63 61 6e 76 |, x, y, |op, canv|
|00003ac0| 61 73 5f 66 6f 6e 74 2c | 20 73 74 72 69 6e 67 2c |as_font,| string,|
|00003ad0| 20 44 45 46 41 55 4c 54 | 5f 43 4f 4c 4f 52 29 3b | DEFAULT|_COLOR);|
|00003ae0| 0a 58 09 20 20 20 20 2f | 2a 20 72 65 74 75 72 6e |.X. /|* return|
|00003af0| 3b 20 2a 2f 0a 58 09 7d | 0a 58 20 20 20 20 7d 0a |; */.X.}|.X }.|
|00003b00| 58 20 20 20 20 2f 2a 20 | 67 65 74 20 66 69 72 73 |X /* |get firs|
|00003b10| 74 20 70 6f 69 6e 74 20 | 61 6e 64 20 63 6f 6f 72 |t point |and coor|
|00003b20| 64 69 6e 61 74 65 73 20 | 2a 2f 0a 58 20 20 20 20 |dinates |*/.X |
|00003b30| 70 6f 69 6e 74 20 3d 20 | 6c 69 6e 65 2d 3e 70 6f |point = |line->po|
|00003b40| 69 6e 74 73 3b 0a 58 20 | 20 20 20 78 20 3d 20 70 |ints;.X | x = p|
|00003b50| 6f 69 6e 74 2d 3e 78 3b | 0a 58 20 20 20 20 79 20 |oint->x;|.X y |
|00003b60| 3d 20 70 6f 69 6e 74 2d | 3e 79 3b 0a 58 0a 58 20 |= point-|>y;.X.X |
|00003b70| 20 20 20 2f 2a 20 69 73 | 20 69 74 20 61 20 73 69 | /* is| it a si|
|00003b80| 6e 67 6c 65 20 70 6f 69 | 6e 74 3f 20 2a 2f 0a 58 |ngle poi|nt? */.X|
|00003b90| 20 20 20 20 69 66 20 28 | 6c 69 6e 65 2d 3e 70 6f | if (|line->po|
|00003ba0| 69 6e 74 73 2d 3e 6e 65 | 78 74 20 3d 3d 20 4e 55 |ints->ne|xt == NU|
|00003bb0| 4c 4c 29 20 7b 0a 58 09 | 2f 2a 20 64 72 61 77 20 |LL) {.X.|/* draw |
|00003bc0| 62 75 74 20 64 6f 6e 27 | 74 20 66 69 6c 6c 20 2a |but don'|t fill *|
|00003bd0| 2f 0a 58 09 70 77 5f 70 | 6f 69 6e 74 28 63 61 6e |/.X.pw_p|oint(can|
|00003be0| 76 61 73 5f 77 69 6e 2c | 20 78 2c 20 79 2c 20 6c |vas_win,| x, y, l|
|00003bf0| 69 6e 65 2d 3e 74 68 69 | 63 6b 6e 65 73 73 2c 20 |ine->thi|ckness, |
|00003c00| 6f 70 2c 20 6c 69 6e 65 | 2d 3e 63 6f 6c 6f 72 29 |op, line|->color)|
|00003c10| 3b 0a 58 09 72 65 74 75 | 72 6e 3b 0a 58 20 20 20 |;.X.retu|rn;.X |
|00003c20| 20 7d 0a 58 20 20 20 20 | 69 66 20 28 6c 69 6e 65 | }.X |if (line|
|00003c30| 2d 3e 62 61 63 6b 5f 61 | 72 72 6f 77 29 09 2f 2a |->back_a|rrow)./*|
|00003c40| 20 62 61 63 6b 77 61 72 | 64 20 61 72 72 6f 77 20 | backwar|d arrow |
|00003c50| 20 2a 2f 0a 58 09 64 72 | 61 77 5f 61 72 72 6f 77 | */.X.dr|aw_arrow|
|00003c60| 28 70 6f 69 6e 74 2d 3e | 6e 65 78 74 2d 3e 78 2c |(point->|next->x,|
|00003c70| 20 70 6f 69 6e 74 2d 3e | 6e 65 78 74 2d 3e 79 2c | point->|next->y,|
|00003c80| 20 78 2c 20 79 2c 0a 58 | 09 09 20 20 20 6c 69 6e | x, y,.X|.. lin|
|00003c90| 65 2d 3e 62 61 63 6b 5f | 61 72 72 6f 77 2c 20 6f |e->back_|arrow, o|
|00003ca0| 70 2c 20 6c 69 6e 65 2d | 3e 63 6f 6c 6f 72 29 3b |p, line-|>color);|
|00003cb0| 0a 58 0a 58 20 20 20 20 | 2f 2a 20 61 63 63 75 6d |.X.X |/* accum|
|00003cc0| 75 6c 61 74 65 20 74 68 | 65 20 70 6f 69 6e 74 73 |ulate th|e points|
|00003cd0| 20 69 6e 20 61 6e 20 61 | 72 72 61 79 20 2d 20 73 | in an a|rray - s|
|00003ce0| 74 61 72 74 20 77 69 74 | 68 20 35 30 20 2a 2f 0a |tart wit|h 50 */.|
|00003cf0| 58 20 20 20 20 69 66 20 | 28 21 69 6e 69 74 5f 70 |X if |(!init_p|
|00003d00| 6f 69 6e 74 5f 61 72 72 | 61 79 28 35 30 2c 20 35 |oint_arr|ay(50, 5|
|00003d10| 30 29 29 0a 58 09 72 65 | 74 75 72 6e 3b 0a 58 0a |0)).X.re|turn;.X.|
|00003d20| 58 20 20 20 20 66 6f 72 | 20 28 70 6f 69 6e 74 20 |X for| (point |
|00003d30| 3d 20 6c 69 6e 65 2d 3e | 70 6f 69 6e 74 73 3b 20 |= line->|points; |
|00003d40| 70 6f 69 6e 74 20 21 3d | 20 4e 55 4c 4c 3b 20 70 |point !=| NULL; p|
|00003d50| 6f 69 6e 74 20 3d 20 70 | 6f 69 6e 74 2d 3e 6e 65 |oint = p|oint->ne|
|00003d60| 78 74 29 20 7b 0a 58 09 | 78 78 20 3d 20 78 3b 0a |xt) {.X.|xx = x;.|
|00003d70| 58 09 79 79 20 3d 20 79 | 3b 0a 58 09 78 20 3d 20 |X.yy = y|;.X.x = |
|00003d80| 70 6f 69 6e 74 2d 3e 78 | 3b 0a 58 09 79 20 3d 20 |point->x|;.X.y = |
|00003d90| 70 6f 69 6e 74 2d 3e 79 | 3b 0a 58 09 61 64 64 5f |point->y|;.X.add_|
|00003da0| 70 6f 69 6e 74 28 78 2c | 20 79 29 3b 0a 58 20 20 |point(x,| y);.X |
|00003db0| 20 20 7d 0a 58 0a 58 20 | 20 20 20 64 72 61 77 5f | }.X.X | draw_|
|00003dc0| 70 6f 69 6e 74 5f 61 72 | 72 61 79 28 63 61 6e 76 |point_ar|ray(canv|
|00003dd0| 61 73 5f 77 69 6e 2c 20 | 6f 70 2c 20 6c 69 6e 65 |as_win, |op, line|
|00003de0| 2d 3e 74 68 69 63 6b 6e | 65 73 73 2c 20 6c 69 6e |->thickn|ess, lin|
|00003df0| 65 2d 3e 73 74 79 6c 65 | 2c 0a 58 09 09 20 20 20 |e->style|,.X.. |
|00003e00| 20 20 6c 69 6e 65 2d 3e | 73 74 79 6c 65 5f 76 61 | line->|style_va|
|00003e10| 6c 2c 20 6c 69 6e 65 2d | 3e 66 69 6c 6c 5f 73 74 |l, line-|>fill_st|
|00003e20| 79 6c 65 2c 20 6c 69 6e | 65 2d 3e 63 6f 6c 6f 72 |yle, lin|e->color|
|00003e30| 29 3b 0a 58 0a 58 20 20 | 20 20 69 66 20 28 6c 69 |);.X.X | if (li|
|00003e40| 6e 65 2d 3e 66 6f 72 5f | 61 72 72 6f 77 29 0a 58 |ne->for_|arrow).X|
|00003e50| 09 64 72 61 77 5f 61 72 | 72 6f 77 28 78 78 2c 20 |.draw_ar|row(xx, |
|00003e60| 79 79 2c 20 78 2c 20 79 | 2c 20 6c 69 6e 65 2d 3e |yy, x, y|, line->|
|00003e70| 66 6f 72 5f 61 72 72 6f | 77 2c 20 6f 70 2c 20 6c |for_arro|w, op, l|
|00003e80| 69 6e 65 2d 3e 63 6f 6c | 6f 72 29 3b 0a 58 7d 0a |ine->col|or);.X}.|
|00003e90| 58 0a 58 64 72 61 77 5f | 61 72 63 62 6f 78 28 6c |X.Xdraw_|arcbox(l|
|00003ea0| 69 6e 65 2c 20 6f 70 29 | 0a 58 20 20 20 20 46 5f |ine, op)|.X F_|
|00003eb0| 6c 69 6e 65 09 20 20 20 | 2a 6c 69 6e 65 3b 0a 58 |line. |*line;.X|
|00003ec0| 20 20 20 20 69 6e 74 09 | 09 20 20 20 20 6f 70 3b | int.|. op;|
|00003ed0| 0a 58 7b 0a 58 20 20 20 | 20 46 5f 70 6f 69 6e 74 |.X{.X | F_point|
|00003ee0| 09 20 20 20 2a 70 6f 69 | 6e 74 3b 0a 58 20 20 20 |. *poi|nt;.X |
|00003ef0| 20 69 6e 74 09 09 20 20 | 20 20 78 6d 69 6e 2c 20 | int.. | xmin, |
|00003f00| 78 6d 61 78 2c 20 79 6d | 69 6e 2c 20 79 6d 61 78 |xmax, ym|in, ymax|
|00003f10| 3b 0a 58 0a 58 20 20 20 | 20 70 6f 69 6e 74 20 3d |;.X.X | point =|
|00003f20| 20 6c 69 6e 65 2d 3e 70 | 6f 69 6e 74 73 3b 0a 58 | line->p|oints;.X|
|00003f30| 20 20 20 20 78 6d 69 6e | 20 3d 20 78 6d 61 78 20 | xmin| = xmax |
|00003f40| 3d 20 70 6f 69 6e 74 2d | 3e 78 3b 0a 58 20 20 20 |= point-|>x;.X |
|00003f50| 20 79 6d 69 6e 20 3d 20 | 79 6d 61 78 20 3d 20 70 | ymin = |ymax = p|
|00003f60| 6f 69 6e 74 2d 3e 79 3b | 0a 58 20 20 20 20 77 68 |oint->y;|.X wh|
|00003f70| 69 6c 65 20 28 70 6f 69 | 6e 74 2d 3e 6e 65 78 74 |ile (poi|nt->next|
|00003f80| 29 20 7b 09 2f 2a 20 66 | 69 6e 64 20 6c 6f 77 65 |) {./* f|ind lowe|
|00003f90| 72 20 6c 65 66 74 20 28 | 75 70 70 65 72 2d 6c 65 |r left (|upper-le|
|00003fa0| 66 74 20 6f 6e 20 73 63 | 72 65 65 6e 29 20 2a 2f |ft on sc|reen) */|
|00003fb0| 0a 58 09 2f 2a 20 61 6e | 64 20 75 70 70 65 72 20 |.X./* an|d upper |
|00003fc0| 72 69 67 68 74 20 28 6c | 6f 77 65 72 20 72 69 67 |right (l|ower rig|
|00003fd0| 68 74 20 6f 6e 20 73 63 | 72 65 65 6e 29 20 2a 2f |ht on sc|reen) */|
|00003fe0| 0a 58 09 70 6f 69 6e 74 | 20 3d 20 70 6f 69 6e 74 |.X.point| = point|
|00003ff0| 2d 3e 6e 65 78 74 3b 0a | 58 09 69 66 20 28 70 6f |->next;.|X.if (po|
|00004000| 69 6e 74 2d 3e 78 20 3c | 20 78 6d 69 6e 29 0a 58 |int->x <| xmin).X|
|00004010| 09 20 20 20 20 78 6d 69 | 6e 20 3d 20 70 6f 69 6e |. xmi|n = poin|
|00004020| 74 2d 3e 78 3b 0a 58 09 | 65 6c 73 65 20 69 66 20 |t->x;.X.|else if |
|00004030| 28 70 6f 69 6e 74 2d 3e | 78 20 3e 20 78 6d 61 78 |(point->|x > xmax|
|00004040| 29 0a 58 09 20 20 20 20 | 78 6d 61 78 20 3d 20 70 |).X. |xmax = p|
|00004050| 6f 69 6e 74 2d 3e 78 3b | 0a 58 09 69 66 20 28 70 |oint->x;|.X.if (p|
|00004060| 6f 69 6e 74 2d 3e 79 20 | 3c 20 79 6d 69 6e 29 0a |oint->y |< ymin).|
|00004070| 58 09 20 20 20 20 79 6d | 69 6e 20 3d 20 70 6f 69 |X. ym|in = poi|
|00004080| 6e 74 2d 3e 79 3b 0a 58 | 09 65 6c 73 65 20 69 66 |nt->y;.X|.else if|
|00004090| 20 28 70 6f 69 6e 74 2d | 3e 79 20 3e 20 79 6d 61 | (point-|>y > yma|
|000040a0| 78 29 0a 58 09 20 20 20 | 20 79 6d 61 78 20 3d 20 |x).X. | ymax = |
|000040b0| 70 6f 69 6e 74 2d 3e 79 | 3b 0a 58 20 20 20 20 7d |point->y|;.X }|
|000040c0| 0a 58 20 20 20 20 70 77 | 5f 61 72 63 62 6f 78 28 |.X pw|_arcbox(|
|000040d0| 63 61 6e 76 61 73 5f 77 | 69 6e 2c 20 78 6d 69 6e |canvas_w|in, xmin|
|000040e0| 2c 20 79 6d 69 6e 2c 20 | 78 6d 61 78 2c 20 79 6d |, ymin, |xmax, ym|
|000040f0| 61 78 2c 20 6c 69 6e 65 | 2d 3e 72 61 64 69 75 73 |ax, line|->radius|
|00004100| 2c 20 6f 70 2c 0a 58 09 | 20 20 20 20 6c 69 6e 65 |, op,.X.| line|
|00004110| 2d 3e 74 68 69 63 6b 6e | 65 73 73 2c 20 6c 69 6e |->thickn|ess, lin|
|00004120| 65 2d 3e 73 74 79 6c 65 | 2c 20 6c 69 6e 65 2d 3e |e->style|, line->|
|00004130| 73 74 79 6c 65 5f 76 61 | 6c 2c 20 6c 69 6e 65 2d |style_va|l, line-|
|00004140| 3e 66 69 6c 6c 5f 73 74 | 79 6c 65 2c 0a 58 09 20 |>fill_st|yle,.X. |
|00004150| 20 20 20 20 20 6c 69 6e | 65 2d 3e 63 6f 6c 6f 72 | lin|e->color|
|00004160| 29 3b 0a 58 7d 0a 58 0a | 58 64 72 61 77 5f 65 70 |);.X}.X.|Xdraw_ep|
|00004170| 73 5f 70 69 78 6d 61 70 | 28 62 6f 78 2c 20 6f 70 |s_pixmap|(box, op|
|00004180| 29 0a 58 20 20 20 20 46 | 5f 6c 69 6e 65 09 20 20 |).X F|_line. |
|00004190| 20 2a 62 6f 78 3b 0a 58 | 20 20 20 20 69 6e 74 09 | *box;.X| int.|
|000041a0| 09 20 20 20 20 6f 70 3b | 0a 58 7b 0a 58 20 20 20 |. op;|.X{.X |
|000041b0| 20 69 6e 74 09 09 20 20 | 20 20 78 6d 69 6e 2c 20 | int.. | xmin, |
|000041c0| 79 6d 69 6e 3b 0a 58 20 | 20 20 20 69 6e 74 09 09 |ymin;.X | int..|
|000041d0| 20 20 20 20 78 6d 61 78 | 2c 20 79 6d 61 78 3b 0a | xmax|, ymax;.|
|000041e0| 58 20 20 20 20 69 6e 74 | 09 09 20 20 20 20 77 69 |X int|.. wi|
|000041f0| 64 74 68 2c 20 68 65 69 | 67 68 74 2c 20 72 6f 74 |dth, hei|ght, rot|
|00004200| 61 74 69 6f 6e 3b 0a 58 | 20 20 20 20 46 5f 70 6f |ation;.X| F_po|
|00004210| 73 09 20 20 20 20 6f 72 | 69 67 69 6e 3b 0a 58 20 |s. or|igin;.X |
|00004220| 20 20 20 46 5f 70 6f 73 | 09 20 20 20 20 6f 70 70 | F_pos|. opp|
|00004230| 6f 73 69 74 65 3b 0a 58 | 0a 58 20 20 20 20 6f 72 |osite;.X|.X or|
|00004240| 69 67 69 6e 2e 78 20 3d | 20 5a 4f 4f 4d 58 28 62 |igin.x =| ZOOMX(b|
|00004250| 6f 78 2d 3e 70 6f 69 6e | 74 73 2d 3e 78 29 3b 0a |ox->poin|ts->x);.|
|00004260| 58 20 20 20 20 6f 72 69 | 67 69 6e 2e 79 20 3d 20 |X ori|gin.y = |
|00004270| 5a 4f 4f 4d 59 28 62 6f | 78 2d 3e 70 6f 69 6e 74 |ZOOMY(bo|x->point|
|00004280| 73 2d 3e 79 29 3b 0a 58 | 20 20 20 20 6f 70 70 6f |s->y);.X| oppo|
|00004290| 73 69 74 65 2e 78 20 3d | 20 5a 4f 4f 4d 58 28 62 |site.x =| ZOOMX(b|
|000042a0| 6f 78 2d 3e 70 6f 69 6e | 74 73 2d 3e 6e 65 78 74 |ox->poin|ts->next|
|000042b0| 2d 3e 6e 65 78 74 2d 3e | 78 29 3b 0a 58 20 20 20 |->next->|x);.X |
|000042c0| 20 6f 70 70 6f 73 69 74 | 65 2e 79 20 3d 20 5a 4f | opposit|e.y = ZO|
|000042d0| 4f 4d 59 28 62 6f 78 2d | 3e 70 6f 69 6e 74 73 2d |OMY(box-|>points-|
|000042e0| 3e 6e 65 78 74 2d 3e 6e | 65 78 74 2d 3e 79 29 3b |>next->n|ext->y);|
|000042f0| 0a 58 0a 58 20 20 20 20 | 78 6d 69 6e 20 3d 20 6d |.X.X |xmin = m|
|00004300| 69 6e 32 28 6f 72 69 67 | 69 6e 2e 78 2c 20 6f 70 |in2(orig|in.x, op|
|00004310| 70 6f 73 69 74 65 2e 78 | 29 3b 0a 58 20 20 20 20 |posite.x|);.X |
|00004320| 79 6d 69 6e 20 3d 20 6d | 69 6e 32 28 6f 72 69 67 |ymin = m|in2(orig|
|00004330| 69 6e 2e 79 2c 20 6f 70 | 70 6f 73 69 74 65 2e 79 |in.y, op|posite.y|
|00004340| 29 3b 0a 58 20 20 20 20 | 78 6d 61 78 20 3d 20 6d |);.X |xmax = m|
|00004350| 61 78 32 28 6f 72 69 67 | 69 6e 2e 78 2c 20 6f 70 |ax2(orig|in.x, op|
|00004360| 70 6f 73 69 74 65 2e 78 | 29 3b 0a 58 20 20 20 20 |posite.x|);.X |
|00004370| 79 6d 61 78 20 3d 20 6d | 61 78 32 28 6f 72 69 67 |ymax = m|ax2(orig|
|00004380| 69 6e 2e 79 2c 20 6f 70 | 70 6f 73 69 74 65 2e 79 |in.y, op|posite.y|
|00004390| 29 3b 0a 58 20 20 20 20 | 69 66 20 28 6f 70 20 3d |);.X |if (op =|
|000043a0| 3d 20 45 52 41 53 45 29 | 20 7b 0a 58 09 63 6c 65 |= ERASE)| {.X.cle|
|000043b0| 61 72 5f 72 65 67 69 6f | 6e 28 78 6d 69 6e 2c 20 |ar_regio|n(xmin, |
|000043c0| 79 6d 69 6e 2c 20 78 6d | 61 78 2c 20 79 6d 61 78 |ymin, xm|ax, ymax|
|000043d0| 29 3b 0a 58 09 72 65 74 | 75 72 6e 3b 0a 58 20 20 |);.X.ret|urn;.X |
|000043e0| 20 20 7d 0a 58 20 20 20 | 20 77 69 64 74 68 20 3d | }.X | width =|
|000043f0| 20 61 62 73 28 6f 72 69 | 67 69 6e 2e 78 20 2d 20 | abs(ori|gin.x - |
|00004400| 6f 70 70 6f 73 69 74 65 | 2e 78 29 3b 0a 58 20 20 |opposite|.x);.X |
|00004410| 20 20 68 65 69 67 68 74 | 20 3d 20 61 62 73 28 6f | height| = abs(o|
|00004420| 72 69 67 69 6e 2e 79 20 | 2d 20 6f 70 70 6f 73 69 |rigin.y |- opposi|
|00004430| 74 65 2e 79 29 3b 0a 58 | 20 20 20 20 72 6f 74 61 |te.y);.X| rota|
|00004440| 74 69 6f 6e 20 3d 20 30 | 3b 0a 58 20 20 20 20 69 |tion = 0|;.X i|
|00004450| 66 20 28 6f 72 69 67 69 | 6e 2e 78 20 3e 20 6f 70 |f (origi|n.x > op|
|00004460| 70 6f 73 69 74 65 2e 78 | 20 26 26 20 6f 72 69 67 |posite.x| && orig|
|00004470| 69 6e 2e 79 20 3e 20 6f | 70 70 6f 73 69 74 65 2e |in.y > o|pposite.|
|00004480| 79 29 0a 58 09 72 6f 74 | 61 74 69 6f 6e 20 3d 20 |y).X.rot|ation = |
|00004490| 31 38 30 3b 0a 58 20 20 | 20 20 69 66 20 28 6f 72 |180;.X | if (or|
|000044a0| 69 67 69 6e 2e 78 20 3e | 20 6f 70 70 6f 73 69 74 |igin.x >| opposit|
|000044b0| 65 2e 78 20 26 26 20 6f | 72 69 67 69 6e 2e 79 20 |e.x && o|rigin.y |
|000044c0| 3c 3d 20 6f 70 70 6f 73 | 69 74 65 2e 79 29 0a 58 |<= oppos|ite.y).X|
|000044d0| 09 72 6f 74 61 74 69 6f | 6e 20 3d 20 32 37 30 3b |.rotatio|n = 270;|
|000044e0| 0a 58 20 20 20 20 69 66 | 20 28 6f 72 69 67 69 6e |.X if| (origin|
|000044f0| 2e 78 20 3c 3d 20 6f 70 | 70 6f 73 69 74 65 2e 78 |.x <= op|posite.x|
|00004500| 20 26 26 20 6f 72 69 67 | 69 6e 2e 79 20 3e 20 6f | && orig|in.y > o|
|00004510| 70 70 6f 73 69 74 65 2e | 79 29 0a 58 09 72 6f 74 |pposite.|y).X.rot|
|00004520| 61 74 69 6f 6e 20 3d 20 | 39 30 3b 0a 58 0a 58 20 |ation = |90;.X.X |
|00004530| 20 20 20 69 66 20 28 62 | 6f 78 2d 3e 65 70 73 2d | if (b|ox->eps-|
|00004540| 3e 70 69 78 5f 72 6f 74 | 61 74 69 6f 6e 20 21 3d |>pix_rot|ation !=|
|00004550| 20 72 6f 74 61 74 69 6f | 6e 20 7c 7c 0a 58 09 62 | rotatio|n ||.X.b|
|00004560| 6f 78 2d 3e 65 70 73 2d | 3e 70 69 78 5f 77 69 64 |ox->eps-|>pix_wid|
|00004570| 74 68 20 21 3d 20 77 69 | 64 74 68 20 7c 7c 0a 58 |th != wi|dth ||.X|
|00004580| 09 62 6f 78 2d 3e 65 70 | 73 2d 3e 70 69 78 5f 68 |.box->ep|s->pix_h|
|00004590| 65 69 67 68 74 20 21 3d | 20 68 65 69 67 68 74 20 |eight !=| height |
|000045a0| 7c 7c 0a 58 09 62 6f 78 | 2d 3e 65 70 73 2d 3e 70 |||.X.box|->eps->p|
|000045b0| 69 78 5f 66 6c 69 70 70 | 65 64 20 21 3d 20 62 6f |ix_flipp|ed != bo|
|000045c0| 78 2d 3e 65 70 73 2d 3e | 66 6c 69 70 70 65 64 29 |x->eps->|flipped)|
|000045d0| 0a 58 09 63 72 65 61 74 | 65 5f 65 70 73 5f 70 69 |.X.creat|e_eps_pi|
|000045e0| 78 6d 61 70 28 62 6f 78 | 2c 20 72 6f 74 61 74 69 |xmap(box|, rotati|
|000045f0| 6f 6e 2c 20 77 69 64 74 | 68 2c 20 68 65 69 67 68 |on, widt|h, heigh|
|00004600| 74 2c 20 62 6f 78 2d 3e | 65 70 73 2d 3e 66 6c 69 |t, box->|eps->fli|
|00004610| 70 70 65 64 29 3b 0a 58 | 0a 58 20 20 20 20 58 43 |pped);.X|.X XC|
|00004620| 6f 70 79 41 72 65 61 28 | 74 6f 6f 6c 5f 64 2c 20 |opyArea(|tool_d, |
|00004630| 62 6f 78 2d 3e 65 70 73 | 2d 3e 70 69 78 6d 61 70 |box->eps|->pixmap|
|00004640| 2c 20 63 61 6e 76 61 73 | 5f 77 69 6e 2c 20 67 63 |, canvas|_win, gc|
|00004650| 63 61 63 68 65 5b 6f 70 | 5d 2c 0a 58 09 20 20 20 |cache[op|],.X. |
|00004660| 20 20 20 30 2c 20 30 2c | 20 78 6d 61 78 20 2d 20 | 0, 0,| xmax - |
|00004670| 78 6d 69 6e 2c 20 79 6d | 61 78 20 2d 20 79 6d 69 |xmin, ym|ax - ymi|
|00004680| 6e 2c 20 78 6d 69 6e 2c | 20 79 6d 69 6e 29 3b 0a |n, xmin,| ymin);.|
|00004690| 58 20 20 20 20 58 46 6c | 75 73 68 28 74 6f 6f 6c |X XFl|ush(tool|
|000046a0| 5f 64 29 3b 0a 58 7d 0a | 58 0a 58 2f 2a 0a 58 20 |_d);.X}.|X.X/*.X |
|000046b0| 2a 20 54 68 65 20 69 6e | 70 75 74 20 74 6f 20 74 |* The in|put to t|
|000046c0| 68 69 73 20 72 6f 75 74 | 69 6e 65 20 69 73 20 74 |his rout|ine is t|
|000046d0| 68 65 20 62 69 74 6d 61 | 70 20 77 68 69 63 68 20 |he bitma|p which |
|000046e0| 69 73 20 74 68 65 20 22 | 70 72 65 76 69 65 77 22 |is the "|preview"|
|000046f0| 0a 58 20 2a 20 73 65 63 | 74 69 6f 6e 20 6f 66 20 |.X * sec|tion of |
|00004700| 61 6e 20 65 6e 63 61 70 | 73 75 6c 61 74 65 64 20 |an encap|sulated |
|00004710| 70 6f 73 74 73 63 72 69 | 70 74 20 66 69 6c 65 2e |postscri|pt file.|
|00004720| 20 54 68 61 74 20 69 6e | 70 75 74 20 62 69 74 6d | That in|put bitm|
|00004730| 61 70 0a 58 20 2a 20 68 | 61 73 20 61 6e 20 61 72 |ap.X * h|as an ar|
|00004740| 62 69 74 72 61 72 79 20 | 6e 75 6d 62 65 72 20 6f |bitrary |number o|
|00004750| 66 20 72 6f 77 73 20 61 | 6e 64 20 63 6f 6c 75 6d |f rows a|nd colum|
|00004760| 6e 73 2e 20 54 68 69 73 | 20 72 6f 75 74 69 6e 65 |ns. This| routine|
|00004770| 0a 58 20 2a 20 72 65 2d | 73 61 6d 70 6c 65 73 20 |.X * re-|samples |
|00004780| 74 68 65 20 69 6e 70 75 | 74 20 62 69 74 6d 61 70 |the inpu|t bitmap|
|00004790| 20 63 72 65 61 74 69 6e | 67 20 61 6e 20 6f 75 74 | creatin|g an out|
|000047a0| 70 75 74 20 62 69 74 6d | 61 70 20 6f 66 20 64 69 |put bitm|ap of di|
|000047b0| 6d 65 6e 73 69 6f 6e 73 | 0a 58 20 2a 20 77 69 64 |mensions|.X * wid|
|000047c0| 74 68 2d 62 79 2d 68 65 | 69 67 68 74 2e 20 54 68 |th-by-he|ight. Th|
|000047d0| 69 73 20 6f 75 74 70 75 | 74 20 62 69 74 6d 61 70 |is outpu|t bitmap|
|000047e0| 20 69 73 20 6d 61 64 65 | 20 69 6e 74 6f 20 61 6e | is made| into an|
|000047f0| 20 58 2d 77 69 6e 64 6f | 77 73 20 70 69 78 6d 61 | X-windo|ws pixma|
|00004800| 70 0a 58 20 2a 20 66 6f | 72 20 64 69 73 70 6c 61 |p.X * fo|r displa|
|00004810| 79 20 70 75 72 70 6f 73 | 65 73 2e 0a 58 20 2a 2f |y purpos|es..X */|
|00004820| 0a 58 63 72 65 61 74 65 | 5f 65 70 73 5f 70 69 78 |.Xcreate|_eps_pix|
|00004830| 6d 61 70 28 62 6f 78 2c | 20 72 6f 74 61 74 69 6f |map(box,| rotatio|
|00004840| 6e 2c 20 77 69 64 74 68 | 2c 20 68 65 69 67 68 74 |n, width|, height|
|00004850| 2c 20 66 6c 69 70 70 65 | 64 29 0a 58 20 20 20 20 |, flippe|d).X |
|00004860| 46 5f 6c 69 6e 65 09 20 | 20 20 2a 62 6f 78 3b 0a |F_line. | *box;.|
|00004870| 58 20 20 20 20 69 6e 74 | 09 09 20 20 20 20 72 6f |X int|.. ro|
|00004880| 74 61 74 69 6f 6e 2c 20 | 77 69 64 74 68 2c 20 68 |tation, |width, h|
|00004890| 65 69 67 68 74 2c 20 66 | 6c 69 70 70 65 64 3b 0a |eight, f|lipped;.|
|000048a0| 58 7b 0a 58 20 20 20 20 | 69 6e 74 09 09 20 20 20 |X{.X |int.. |
|000048b0| 20 69 3b 0a 58 20 20 20 | 20 69 6e 74 09 09 20 20 | i;.X | int.. |
|000048c0| 20 20 6a 3b 0a 58 20 20 | 20 20 62 79 74 65 09 20 | j;.X | byte. |
|000048d0| 20 20 2a 64 61 74 61 3b | 0a 58 20 20 20 20 62 79 | *data;|.X by|
|000048e0| 74 65 09 20 20 20 2a 74 | 64 61 74 61 3b 0a 58 20 |te. *t|data;.X |
|000048f0| 20 20 20 69 6e 74 09 09 | 20 20 20 20 6e 62 79 74 | int..| nbyt|
|00004900| 65 73 3b 0a 58 20 20 20 | 20 69 6e 74 09 09 20 20 |es;.X | int.. |
|00004910| 20 20 62 62 79 74 65 73 | 3b 0a 58 20 20 20 20 69 | bbytes|;.X i|
|00004920| 6e 74 09 09 20 20 20 20 | 69 62 69 74 3b 0a 58 20 |nt.. |ibit;.X |
|00004930| 20 20 20 69 6e 74 09 09 | 20 20 20 20 6a 62 69 74 | int..| jbit|
|00004940| 3b 0a 58 20 20 20 20 69 | 6e 74 09 09 20 20 20 20 |;.X i|nt.. |
|00004950| 77 62 69 74 3b 0a 58 0a | 58 20 20 20 20 69 66 20 |wbit;.X.|X if |
|00004960| 28 62 6f 78 2d 3e 65 70 | 73 2d 3e 70 69 78 6d 61 |(box->ep|s->pixma|
|00004970| 70 20 21 3d 20 30 29 0a | 58 09 58 46 72 65 65 50 |p != 0).|X.XFreeP|
|00004980| 69 78 6d 61 70 28 74 6f | 6f 6c 5f 64 2c 20 62 6f |ixmap(to|ol_d, bo|
|00004990| 78 2d 3e 65 70 73 2d 3e | 70 69 78 6d 61 70 29 3b |x->eps->|pixmap);|
|000049a0| 0a 58 0a 58 20 20 20 20 | 6e 62 79 74 65 73 20 3d |.X.X |nbytes =|
|000049b0| 20 28 77 69 64 74 68 20 | 2b 20 37 29 20 2f 20 38 | (width |+ 7) / 8|
|000049c0| 3b 0a 58 20 20 20 20 62 | 62 79 74 65 73 20 3d 20 |;.X b|bytes = |
|000049d0| 28 62 6f 78 2d 3e 65 70 | 73 2d 3e 62 69 74 5f 73 |(box->ep|s->bit_s|
|000049e0| 69 7a 65 2e 78 20 2b 20 | 37 29 20 2f 20 38 3b 0a |ize.x + |7) / 8;.|
|000049f0| 58 20 20 20 20 64 61 74 | 61 20 3d 20 28 62 79 74 |X dat|a = (byt|
|00004a00| 65 20 2a 29 20 6d 61 6c | 6c 6f 63 28 6e 62 79 74 |e *) mal|loc(nbyt|
|00004a10| 65 73 20 2a 20 68 65 69 | 67 68 74 29 3b 0a 58 20 |es * hei|ght);.X |
|00004a20| 20 20 20 74 64 61 74 61 | 20 3d 20 28 62 79 74 65 | tdata| = (byte|
|00004a30| 20 2a 29 20 6d 61 6c 6c | 6f 63 28 6e 62 79 74 65 | *) mall|oc(nbyte|
|00004a40| 73 29 3b 0a 58 20 20 20 | 20 62 7a 65 72 6f 28 64 |s);.X | bzero(d|
|00004a50| 61 74 61 2c 20 6e 62 79 | 74 65 73 20 2a 20 68 65 |ata, nby|tes * he|
|00004a60| 69 67 68 74 29 3b 09 2f | 2a 20 63 6c 65 61 72 20 |ight);./|* clear |
|00004a70| 6d 65 6d 6f 72 79 20 2a | 2f 0a 58 0a 58 20 20 20 |memory *|/.X.X |
|00004a80| 20 2f 2a 20 63 72 65 61 | 74 65 20 61 20 6e 65 77 | /* crea|te a new|
|00004a90| 20 62 69 74 6d 61 70 20 | 61 74 20 74 68 65 20 73 | bitmap |at the s|
|00004aa0| 70 65 63 69 66 69 65 64 | 20 73 69 7a 65 20 28 72 |pecified| size (r|
|00004ab0| 65 71 75 69 72 65 73 20 | 69 6e 74 65 72 70 6f 6c |equires |interpol|
|00004ac0| 61 74 69 6f 6e 29 20 2a | 2f 0a 58 20 20 20 20 69 |ation) *|/.X i|
|00004ad0| 66 20 28 28 21 66 6c 69 | 70 70 65 64 20 26 26 20 |f ((!fli|pped && |
|00004ae0| 28 72 6f 74 61 74 69 6f | 6e 20 3d 3d 20 30 20 7c |(rotatio|n == 0 ||
|00004af0| 7c 20 72 6f 74 61 74 69 | 6f 6e 20 3d 3d 20 31 38 || rotati|on == 18|
|00004b00| 30 29 29 20 7c 7c 0a 58 | 09 28 66 6c 69 70 70 65 |0)) ||.X|.(flippe|
|00004b10| 64 20 26 26 20 21 28 72 | 6f 74 61 74 69 6f 6e 20 |d && !(r|otation |
|00004b20| 3d 3d 20 30 20 7c 7c 20 | 72 6f 74 61 74 69 6f 6e |== 0 || |rotation|
|00004b30| 20 3d 3d 20 31 38 30 29 | 29 29 20 7b 0a 58 09 66 | == 180)|)) {.X.f|
|00004b40| 6f 72 20 28 6a 20 3d 20 | 30 3b 20 6a 20 3c 20 68 |or (j = |0; j < h|
|00004b50| 65 69 67 68 74 3b 20 6a | 2b 2b 29 0a 58 09 20 20 |eight; j|++).X. |
|00004b60| 20 20 66 6f 72 20 28 69 | 20 3d 20 30 3b 20 69 20 | for (i| = 0; i |
|00004b70| 3c 20 77 69 64 74 68 3b | 20 69 2b 2b 29 20 7b 0a |< width;| i++) {.|
|00004b80| 58 09 09 69 62 69 74 20 | 3d 20 62 6f 78 2d 3e 65 |X..ibit |= box->e|
|00004b90| 70 73 2d 3e 62 69 74 5f | 73 69 7a 65 2e 78 20 2a |ps->bit_|size.x *|
|00004ba0| 20 69 20 2f 20 77 69 64 | 74 68 3b 0a 58 09 09 6a | i / wid|th;.X..j|
|00004bb0| 62 69 74 20 3d 20 62 6f | 78 2d 3e 65 70 73 2d 3e |bit = bo|x->eps->|
|00004bc0| 62 69 74 5f 73 69 7a 65 | 2e 79 20 2a 20 6a 20 2f |bit_size|.y * j /|
|00004bd0| 20 68 65 69 67 68 74 3b | 0a 58 09 09 77 62 69 74 | height;|.X..wbit|
|00004be0| 20 3d 20 2a 28 62 6f 78 | 2d 3e 65 70 73 2d 3e 62 | = *(box|->eps->b|
|00004bf0| 69 74 6d 61 70 20 2b 20 | 6a 62 69 74 20 2a 20 62 |itmap + |jbit * b|
|00004c00| 62 79 74 65 73 20 2b 20 | 69 62 69 74 20 2f 20 38 |bytes + |ibit / 8|
|00004c10| 29 3b 0a 58 09 09 69 66 | 20 28 77 62 69 74 20 26 |);.X..if| (wbit &|
|00004c20| 20 28 31 20 3c 3c 20 28 | 37 20 2d 20 28 69 62 69 | (1 << (|7 - (ibi|
|00004c30| 74 20 26 20 37 29 29 29 | 29 0a 58 09 09 20 20 20 |t & 7)))|).X.. |
|00004c40| 20 2a 28 64 61 74 61 20 | 2b 20 6a 20 2a 20 6e 62 | *(data |+ j * nb|
|00004c50| 79 74 65 73 20 2b 20 69 | 20 2f 20 38 29 20 2b 3d |ytes + i| / 8) +=|
|00004c60| 20 28 31 20 3c 3c 20 28 | 69 20 26 20 37 29 29 3b | (1 << (|i & 7));|
|00004c70| 0a 58 09 20 20 20 20 7d | 0a 58 20 20 20 20 7d 20 |.X. }|.X } |
|00004c80| 65 6c 73 65 20 7b 0a 58 | 09 66 6f 72 20 28 6a 20 |else {.X|.for (j |
|00004c90| 3d 20 30 3b 20 6a 20 3c | 20 68 65 69 67 68 74 3b |= 0; j <| height;|
|00004ca0| 20 6a 2b 2b 29 0a 58 09 | 20 20 20 20 66 6f 72 20 | j++).X.| for |
|00004cb0| 28 69 20 3d 20 30 3b 20 | 69 20 3c 20 77 69 64 74 |(i = 0; |i < widt|
|00004cc0| 68 3b 20 69 2b 2b 29 20 | 7b 0a 58 09 09 69 62 69 |h; i++) |{.X..ibi|
|00004cd0| 74 20 3d 20 62 6f 78 2d | 3e 65 70 73 2d 3e 62 69 |t = box-|>eps->bi|
|00004ce0| 74 5f 73 69 7a 65 2e 78 | 20 2a 20 6a 20 2f 20 68 |t_size.x| * j / h|
|00004cf0| 65 69 67 68 74 3b 0a 58 | 09 09 6a 62 69 74 20 3d |eight;.X|..jbit =|
|00004d00| 20 62 6f 78 2d 3e 65 70 | 73 2d 3e 62 69 74 5f 73 | box->ep|s->bit_s|
|00004d10| 69 7a 65 2e 79 20 2a 20 | 69 20 2f 20 77 69 64 74 |ize.y * |i / widt|
|00004d20| 68 3b 0a 58 09 09 77 62 | 69 74 20 3d 20 2a 28 62 |h;.X..wb|it = *(b|
|00004d30| 6f 78 2d 3e 65 70 73 2d | 3e 62 69 74 6d 61 70 20 |ox->eps-|>bitmap |
|00004d40| 2b 20 6a 62 69 74 20 2a | 20 62 62 79 74 65 73 20 |+ jbit *| bbytes |
|00004d50| 2b 20 69 62 69 74 20 2f | 20 38 29 3b 0a 58 09 09 |+ ibit /| 8);.X..|
|00004d60| 69 66 20 28 77 62 69 74 | 20 26 20 28 31 20 3c 3c |if (wbit| & (1 <<|
|00004d70| 20 28 37 20 2d 20 28 69 | 62 69 74 20 26 20 37 29 | (7 - (i|bit & 7)|
|00004d80| 29 29 29 0a 58 09 09 20 | 20 20 20 2a 28 64 61 74 |))).X.. | *(dat|
|00004d90| 61 20 2b 20 28 68 65 69 | 67 68 74 20 2d 20 6a 29 |a + (hei|ght - j)|
|00004da0| 20 2a 20 6e 62 79 74 65 | 73 20 2b 20 69 20 2f 20 | * nbyte|s + i / |
|00004db0| 38 29 20 2b 3d 20 28 31 | 20 3c 3c 20 28 69 20 26 |8) += (1| << (i &|
|00004dc0| 20 37 29 29 3b 0a 58 09 | 20 20 20 20 7d 0a 58 20 | 7));.X.| }.X |
|00004dd0| 20 20 20 7d 0a 58 0a 58 | 20 20 20 20 2f 2a 20 68 | }.X.X| /* h|
|00004de0| 6f 72 69 7a 6f 6e 74 61 | 6c 20 73 77 61 70 20 2a |orizonta|l swap *|
|00004df0| 2f 0a 58 20 20 20 20 69 | 66 20 28 72 6f 74 61 74 |/.X i|f (rotat|
|00004e00| 69 6f 6e 20 3d 3d 20 31 | 38 30 20 7c 7c 20 72 6f |ion == 1|80 || ro|
|00004e10| 74 61 74 69 6f 6e 20 3d | 3d 20 32 37 30 29 0a 58 |tation =|= 270).X|
|00004e20| 09 66 6f 72 20 28 6a 20 | 3d 20 30 3b 20 6a 20 3c |.for (j |= 0; j <|
|00004e30| 20 68 65 69 67 68 74 3b | 20 6a 2b 2b 29 20 7b 0a | height;| j++) {.|
|00004e40| 58 09 20 20 20 20 62 7a | 65 72 6f 28 74 64 61 74 |X. bz|ero(tdat|
|00004e50| 61 2c 20 6e 62 79 74 65 | 73 29 3b 0a 58 09 20 20 |a, nbyte|s);.X. |
|00004e60| 20 20 66 6f 72 20 28 69 | 20 3d 20 30 3b 20 69 20 | for (i| = 0; i |
|00004e70| 3c 20 77 69 64 74 68 3b | 20 69 2b 2b 29 0a 58 09 |< width;| i++).X.|
|00004e80| 09 69 66 20 28 2a 28 64 | 61 74 61 20 2b 20 6a 20 |.if (*(d|ata + j |
|00004e90| 2a 20 6e 62 79 74 65 73 | 20 2b 20 28 77 69 64 74 |* nbytes| + (widt|
|00004ea0| 68 20 2d 20 69 20 2d 20 | 31 29 20 2f 20 38 29 20 |h - i - |1) / 8) |
|00004eb0| 26 20 28 31 20 3c 3c 20 | 28 28 77 69 64 74 68 20 |& (1 << |((width |
|00004ec0| 2d 20 69 20 2d 20 31 29 | 20 26 20 37 29 29 29 0a |- i - 1)| & 7))).|
|00004ed0| 58 09 09 20 20 20 20 2a | 28 74 64 61 74 61 20 2b |X.. *|(tdata +|
|00004ee0| 20 69 20 2f 20 38 29 20 | 2b 3d 20 28 31 20 3c 3c | i / 8) |+= (1 <<|
|00004ef0| 20 28 69 20 26 20 37 29 | 29 3b 0a 58 09 20 20 20 | (i & 7)|);.X. |
|00004f00| 20 62 63 6f 70 79 28 74 | 64 61 74 61 2c 20 64 61 | bcopy(t|data, da|
|00004f10| 74 61 20 2b 20 6a 20 2a | 20 6e 62 79 74 65 73 2c |ta + j *| nbytes,|
|00004f20| 20 6e 62 79 74 65 73 29 | 3b 0a 58 09 7d 0a 58 0a | nbytes)|;.X.}.X.|
|00004f30| 58 20 20 20 20 2f 2a 20 | 76 65 72 74 69 63 61 6c |X /* |vertical|
|00004f40| 20 73 77 61 70 20 2a 2f | 0a 58 20 20 20 20 69 66 | swap */|.X if|
|00004f50| 20 28 28 21 66 6c 69 70 | 70 65 64 20 26 26 20 28 | ((!flip|ped && (|
|00004f60| 72 6f 74 61 74 69 6f 6e | 20 3d 3d 20 31 38 30 20 |rotation| == 180 |
|00004f70| 7c 7c 20 72 6f 74 61 74 | 69 6f 6e 20 3d 3d 20 32 ||| rotat|ion == 2|
|00004f80| 37 30 29 29 20 7c 7c 0a | 58 09 28 66 6c 69 70 70 |70)) ||.|X.(flipp|
|00004f90| 65 64 20 26 26 20 21 28 | 72 6f 74 61 74 69 6f 6e |ed && !(|rotation|
|00004fa0| 20 3d 3d 20 31 38 30 20 | 7c 7c 20 72 6f 74 61 74 | == 180 ||| rotat|
|00004fb0| 69 6f 6e 20 3d 3d 20 32 | 37 30 29 29 29 0a 58 09 |ion == 2|70))).X.|
|00004fc0| 66 6f 72 20 28 6a 20 3d | 20 30 3b 20 6a 20 3c 20 |for (j =| 0; j < |
|00004fd0| 28 68 65 69 67 68 74 20 | 2b 20 31 29 20 2f 20 32 |(height |+ 1) / 2|
|00004fe0| 3b 20 6a 2b 2b 29 20 7b | 0a 58 09 20 20 20 20 62 |; j++) {|.X. b|
|00004ff0| 63 6f 70 79 28 64 61 74 | 61 20 2b 20 6a 20 2a 20 |copy(dat|a + j * |
|00005000| 6e 62 79 74 65 73 2c 20 | 74 64 61 74 61 2c 20 6e |nbytes, |tdata, n|
|00005010| 62 79 74 65 73 29 3b 0a | 58 09 20 20 20 20 62 63 |bytes);.|X. bc|
|00005020| 6f 70 79 28 64 61 74 61 | 20 2b 20 28 68 65 69 67 |opy(data| + (heig|
|00005030| 68 74 20 2d 20 6a 20 2d | 20 31 29 20 2a 20 6e 62 |ht - j -| 1) * nb|
|00005040| 79 74 65 73 2c 20 64 61 | 74 61 20 2b 20 6a 20 2a |ytes, da|ta + j *|
|00005050| 20 6e 62 79 74 65 73 2c | 20 6e 62 79 74 65 73 29 | nbytes,| nbytes)|
|00005060| 3b 0a 58 09 20 20 20 20 | 62 63 6f 70 79 28 74 64 |;.X. |bcopy(td|
|00005070| 61 74 61 2c 20 64 61 74 | 61 20 2b 20 28 68 65 69 |ata, dat|a + (hei|
|00005080| 67 68 74 20 2d 20 6a 20 | 2d 20 31 29 20 2a 20 6e |ght - j |- 1) * n|
|00005090| 62 79 74 65 73 2c 20 6e | 62 79 74 65 73 29 3b 0a |bytes, n|bytes);.|
|000050a0| 58 09 7d 0a 58 0a 58 20 | 20 20 20 62 6f 78 2d 3e |X.}.X.X | box->|
|000050b0| 65 70 73 2d 3e 70 69 78 | 6d 61 70 20 3d 20 58 43 |eps->pix|map = XC|
|000050c0| 72 65 61 74 65 50 69 78 | 6d 61 70 46 72 6f 6d 42 |reatePix|mapFromB|
|000050d0| 69 74 6d 61 70 44 61 74 | 61 28 74 6f 6f 6c 5f 64 |itmapDat|a(tool_d|
|000050e0| 2c 20 63 61 6e 76 61 73 | 5f 77 69 6e 2c 0a 58 09 |, canvas|_win,.X.|
|000050f0| 09 09 09 09 20 20 20 20 | 20 20 20 28 63 68 61 72 |.... | (char|
|00005100| 20 2a 29 20 64 61 74 61 | 2c 20 77 69 64 74 68 2c | *) data|, width,|
|00005110| 20 68 65 69 67 68 74 2c | 0a 58 09 09 09 20 20 20 | height,|.X... |
|00005120| 20 20 20 20 28 62 6f 78 | 2d 3e 63 6f 6c 6f 72 20 | (box|->color |
|00005130| 3e 3d 20 30 20 26 26 20 | 62 6f 78 2d 3e 63 6f 6c |>= 0 && |box->col|
|00005140| 6f 72 20 3c 20 4e 55 4d | 43 4f 4c 4f 52 53 29 20 |or < NUM|COLORS) |
|00005150| 3f 0a 58 09 09 09 09 61 | 70 70 72 65 73 2e 63 6f |?.X....a|ppres.co|
|00005160| 6c 6f 72 5b 62 6f 78 2d | 3e 63 6f 6c 6f 72 5d 20 |lor[box-|>color] |
|00005170| 3a 20 78 5f 66 67 5f 63 | 6f 6c 6f 72 2e 70 69 78 |: x_fg_c|olor.pix|
|00005180| 65 6c 2c 0a 58 09 09 09 | 09 09 09 20 20 20 78 5f |el,.X...|... x_|
|00005190| 62 67 5f 63 6f 6c 6f 72 | 2e 70 69 78 65 6c 2c 0a |bg_color|.pixel,.|
|000051a0| 58 09 09 09 09 09 20 20 | 20 20 20 20 44 65 66 61 |X..... | Defa|
|000051b0| 75 6c 74 44 65 70 74 68 | 4f 66 53 63 72 65 65 6e |ultDepth|OfScreen|
|000051c0| 28 74 6f 6f 6c 5f 73 29 | 29 3b 0a 58 20 20 20 20 |(tool_s)|);.X |
|000051d0| 66 72 65 65 28 64 61 74 | 61 29 3b 0a 58 20 20 20 |free(dat|a);.X |
|000051e0| 20 66 72 65 65 28 74 64 | 61 74 61 29 3b 0a 58 0a | free(td|ata);.X.|
|000051f0| 58 20 20 20 20 62 6f 78 | 2d 3e 65 70 73 2d 3e 70 |X box|->eps->p|
|00005200| 69 78 5f 72 6f 74 61 74 | 69 6f 6e 20 3d 20 72 6f |ix_rotat|ion = ro|
|00005210| 74 61 74 69 6f 6e 3b 0a | 58 20 20 20 20 62 6f 78 |tation;.|X box|
|00005220| 2d 3e 65 70 73 2d 3e 70 | 69 78 5f 77 69 64 74 68 |->eps->p|ix_width|
|00005230| 20 3d 20 77 69 64 74 68 | 3b 0a 58 20 20 20 20 62 | = width|;.X b|
|00005240| 6f 78 2d 3e 65 70 73 2d | 3e 70 69 78 5f 68 65 69 |ox->eps-|>pix_hei|
|00005250| 67 68 74 20 3d 20 68 65 | 69 67 68 74 3b 0a 58 20 |ght = he|ight;.X |
|00005260| 20 20 20 62 6f 78 2d 3e | 65 70 73 2d 3e 70 69 78 | box->|eps->pix|
|00005270| 5f 66 6c 69 70 70 65 64 | 20 3d 20 66 6c 69 70 70 |_flipped| = flipp|
|00005280| 65 64 3b 0a 58 7d 0a 58 | 0a 58 2f 2a 2a 2a 2a 2a |ed;.X}.X|.X/*****|
|00005290| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000052a0| 2a 2a 20 53 50 4c 49 4e | 45 20 2a 2a 2a 2a 2a 2a |** SPLIN|E ******|
|000052b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000052c0| 2a 2a 2a 2a 2a 2f 0a 58 | 0a 58 64 72 61 77 5f 73 |*****/.X|.Xdraw_s|
|000052d0| 70 6c 69 6e 65 28 73 70 | 6c 69 6e 65 2c 20 6f 70 |pline(sp|line, op|
|000052e0| 29 0a 58 20 20 20 20 46 | 5f 73 70 6c 69 6e 65 09 |).X F|_spline.|
|000052f0| 20 20 20 2a 73 70 6c 69 | 6e 65 3b 0a 58 20 20 20 | *spli|ne;.X |
|00005300| 20 69 6e 74 09 09 20 20 | 20 20 6f 70 3b 0a 58 7b | int.. | op;.X{|
|00005310| 0a 58 20 20 20 20 69 6e | 74 09 09 20 20 20 20 78 |.X in|t.. x|
|00005320| 6d 69 6e 2c 20 79 6d 69 | 6e 2c 20 78 6d 61 78 2c |min, ymi|n, xmax,|
|00005330| 20 79 6d 61 78 3b 0a 58 | 0a 58 20 20 20 20 73 70 | ymax;.X|.X sp|
|00005340| 6c 69 6e 65 5f 62 6f 75 | 6e 64 28 73 70 6c 69 6e |line_bou|nd(splin|
|00005350| 65 2c 20 26 78 6d 69 6e | 2c 20 26 79 6d 69 6e 2c |e, &xmin|, &ymin,|
|00005360| 20 26 78 6d 61 78 2c 20 | 26 79 6d 61 78 29 3b 0a | &xmax, |&ymax);.|
|00005370| 58 20 20 20 20 69 66 20 | 28 21 6f 76 65 72 6c 61 |X if |(!overla|
|00005380| 70 70 69 6e 67 28 5a 4f | 4f 4d 58 28 78 6d 69 6e |pping(ZO|OMX(xmin|
|00005390| 29 2c 20 5a 4f 4f 4d 59 | 28 79 6d 69 6e 29 2c 20 |), ZOOMY|(ymin), |
|000053a0| 5a 4f 4f 4d 58 28 78 6d | 61 78 29 2c 20 5a 4f 4f |ZOOMX(xm|ax), ZOO|
|000053b0| 4d 59 28 79 6d 61 78 29 | 2c 0a 58 09 09 20 20 20 |MY(ymax)|,.X.. |
|000053c0| 20 20 63 6c 69 70 5f 78 | 6d 69 6e 2c 20 63 6c 69 | clip_x|min, cli|
|000053d0| 70 5f 79 6d 69 6e 2c 20 | 63 6c 69 70 5f 78 6d 61 |p_ymin, |clip_xma|
|000053e0| 78 2c 20 63 6c 69 70 5f | 79 6d 61 78 29 29 0a 58 |x, clip_|ymax)).X|
|000053f0| 09 72 65 74 75 72 6e 3b | 0a 58 0a 58 20 20 20 20 |.return;|.X.X |
|00005400| 69 66 20 28 69 6e 74 5f | 73 70 6c 69 6e 65 28 73 |if (int_|spline(s|
|00005410| 70 6c 69 6e 65 29 29 0a | 58 09 64 72 61 77 5f 69 |pline)).|X.draw_i|
|00005420| 6e 74 73 70 6c 69 6e 65 | 28 73 70 6c 69 6e 65 2c |ntspline|(spline,|
|00005430| 20 6f 70 29 3b 0a 58 20 | 20 20 20 65 6c 73 65 20 | op);.X | else |
|00005440| 69 66 20 28 73 70 6c 69 | 6e 65 2d 3e 74 79 70 65 |if (spli|ne->type|
|00005450| 20 3d 3d 20 54 5f 43 4c | 4f 53 45 44 5f 4e 4f 52 | == T_CL|OSED_NOR|
|00005460| 4d 41 4c 29 0a 58 09 64 | 72 61 77 5f 63 6c 6f 73 |MAL).X.d|raw_clos|
|00005470| 65 64 5f 73 70 6c 69 6e | 65 28 73 70 6c 69 6e 65 |ed_splin|e(spline|
|00005480| 2c 20 6f 70 29 3b 0a 58 | 20 20 20 20 65 6c 73 65 |, op);.X| else|
|00005490| 20 69 66 20 28 73 70 6c | 69 6e 65 2d 3e 74 79 70 | if (spl|ine->typ|
|000054a0| 65 20 3d 3d 20 54 5f 4f | 50 45 4e 5f 4e 4f 52 4d |e == T_O|PEN_NORM|
|000054b0| 41 4c 29 0a 58 09 64 72 | 61 77 5f 6f 70 65 6e 5f |AL).X.dr|aw_open_|
|000054c0| 73 70 6c 69 6e 65 28 73 | 70 6c 69 6e 65 2c 20 6f |spline(s|pline, o|
|000054d0| 70 29 3b 0a 58 7d 0a 58 | 0a 58 64 72 61 77 5f 69 |p);.X}.X|.Xdraw_i|
|000054e0| 6e 74 73 70 6c 69 6e 65 | 28 73 2c 20 6f 70 29 0a |ntspline|(s, op).|
|000054f0| 58 20 20 20 20 46 5f 73 | 70 6c 69 6e 65 09 20 20 |X F_s|pline. |
|00005500| 20 2a 73 3b 0a 58 20 20 | 20 20 69 6e 74 09 09 20 | *s;.X | int.. |
|00005510| 20 20 20 6f 70 3b 0a 58 | 7b 0a 58 20 20 20 20 46 | op;.X|{.X F|
|00005520| 5f 70 6f 69 6e 74 09 20 | 20 20 2a 70 31 2c 20 2a |_point. | *p1, *|
|00005530| 70 32 3b 0a 58 20 20 20 | 20 46 5f 63 6f 6e 74 72 |p2;.X | F_contr|
|00005540| 6f 6c 09 20 20 20 2a 63 | 70 31 2c 20 2a 63 70 32 |ol. *c|p1, *cp2|
|00005550| 3b 0a 58 0a 58 20 20 20 | 20 70 31 20 3d 20 73 2d |;.X.X | p1 = s-|
|00005560| 3e 70 6f 69 6e 74 73 3b | 0a 58 20 20 20 20 63 70 |>points;|.X cp|
|00005570| 31 20 3d 20 73 2d 3e 63 | 6f 6e 74 72 6f 6c 73 3b |1 = s->c|ontrols;|
|00005580| 0a 58 20 20 20 20 63 70 | 32 20 3d 20 63 70 31 2d |.X cp|2 = cp1-|
|00005590| 3e 6e 65 78 74 3b 0a 58 | 20 20 20 20 69 66 20 28 |>next;.X| if (|
|000055a0| 73 2d 3e 62 61 63 6b 5f | 61 72 72 6f 77 29 0a 58 |s->back_|arrow).X|
|000055b0| 09 64 72 61 77 5f 61 72 | 72 6f 77 28 72 6f 75 6e |.draw_ar|row(roun|
|000055c0| 64 28 63 70 32 2d 3e 6c | 78 29 2c 20 72 6f 75 6e |d(cp2->l|x), roun|
|000055d0| 64 28 63 70 32 2d 3e 6c | 79 29 2c 20 70 31 2d 3e |d(cp2->l|y), p1->|
|000055e0| 78 2c 20 70 31 2d 3e 79 | 2c 0a 58 09 09 20 20 20 |x, p1->y|,.X.. |
|000055f0| 73 2d 3e 62 61 63 6b 5f | 61 72 72 6f 77 2c 20 6f |s->back_|arrow, o|
|00005600| 70 2c 20 73 2d 3e 63 6f | 6c 6f 72 29 3b 0a 58 0a |p, s->co|lor);.X.|
|00005610| 58 20 20 20 20 69 66 20 | 28 21 69 6e 69 74 5f 70 |X if |(!init_p|
|00005620| 6f 69 6e 74 5f 61 72 72 | 61 79 28 33 30 30 2c 20 |oint_arr|ay(300, |
|00005630| 32 30 30 29 29 0a 58 09 | 72 65 74 75 72 6e 3b 0a |200)).X.|return;.|
|00005640| 58 0a 58 20 20 20 20 66 | 6f 72 20 28 70 32 20 3d |X.X f|or (p2 =|
|00005650| 20 70 31 2d 3e 6e 65 78 | 74 2c 20 63 70 32 20 3d | p1->nex|t, cp2 =|
|00005660| 20 63 70 31 2d 3e 6e 65 | 78 74 3b 20 70 32 20 21 | cp1->ne|xt; p2 !|
|00005670| 3d 20 4e 55 4c 4c 3b 0a | 58 09 20 70 31 20 3d 20 |= NULL;.|X. p1 = |
|00005680| 70 32 2c 20 63 70 31 20 | 3d 20 63 70 32 2c 20 70 |p2, cp1 |= cp2, p|
|00005690| 32 20 3d 20 70 32 2d 3e | 6e 65 78 74 2c 20 63 70 |2 = p2->|next, cp|
|000056a0| 32 20 3d 20 63 70 32 2d | 3e 6e 65 78 74 29 20 7b |2 = cp2-|>next) {|
|000056b0| 0a 58 09 62 65 7a 69 65 | 72 5f 73 70 6c 69 6e 65 |.X.bezie|r_spline|
|000056c0| 28 28 66 6c 6f 61 74 29 | 20 70 31 2d 3e 78 2c 20 |((float)| p1->x, |
|000056d0| 28 66 6c 6f 61 74 29 20 | 70 31 2d 3e 79 2c 20 63 |(float) |p1->y, c|
|000056e0| 70 31 2d 3e 72 78 2c 20 | 63 70 31 2d 3e 72 79 2c |p1->rx, |cp1->ry,|
|000056f0| 0a 58 09 09 20 20 20 20 | 20 20 63 70 32 2d 3e 6c |.X.. | cp2->l|
|00005700| 78 2c 20 63 70 32 2d 3e | 6c 79 2c 20 28 66 6c 6f |x, cp2->|ly, (flo|
|00005710| 61 74 29 20 70 32 2d 3e | 78 2c 20 28 66 6c 6f 61 |at) p2->|x, (floa|
|00005720| 74 29 20 70 32 2d 3e 79 | 2c 20 6f 70 2c 0a 58 09 |t) p2->y|, op,.X.|
|00005730| 09 20 20 20 20 20 20 73 | 2d 3e 74 68 69 63 6b 6e |. s|->thickn|
|00005740| 65 73 73 2c 20 73 2d 3e | 73 74 79 6c 65 2c 20 73 |ess, s->|style, s|
|00005750| 2d 3e 73 74 79 6c 65 5f | 76 61 6c 29 3b 0a 58 20 |->style_|val);.X |
|00005760| 20 20 20 7d 0a 58 0a 58 | 20 20 20 20 61 64 64 5f | }.X.X| add_|
|00005770| 70 6f 69 6e 74 28 70 31 | 2d 3e 78 2c 20 70 31 2d |point(p1|->x, p1-|
|00005780| 3e 79 29 3b 0a 58 0a 58 | 20 20 20 20 64 72 61 77 |>y);.X.X| draw|
|00005790| 5f 70 6f 69 6e 74 5f 61 | 72 72 61 79 28 63 61 6e |_point_a|rray(can|
|000057a0| 76 61 73 5f 77 69 6e 2c | 20 6f 70 2c 20 73 2d 3e |vas_win,| op, s->|
|000057b0| 74 68 69 63 6b 6e 65 73 | 73 2c 20 73 2d 3e 73 74 |thicknes|s, s->st|
|000057c0| 79 6c 65 2c 0a 58 09 09 | 20 20 20 20 20 73 2d 3e |yle,.X..| s->|
|000057d0| 73 74 79 6c 65 5f 76 61 | 6c 2c 20 73 2d 3e 66 69 |style_va|l, s->fi|
|000057e0| 6c 6c 5f 73 74 79 6c 65 | 2c 20 73 2d 3e 63 6f 6c |ll_style|, s->col|
|000057f0| 6f 72 29 3b 0a 58 0a 58 | 20 20 20 20 69 66 20 28 |or);.X.X| if (|
|00005800| 73 2d 3e 66 6f 72 5f 61 | 72 72 6f 77 29 0a 58 09 |s->for_a|rrow).X.|
|00005810| 64 72 61 77 5f 61 72 72 | 6f 77 28 72 6f 75 6e 64 |draw_arr|ow(round|
|00005820| 28 63 70 31 2d 3e 6c 78 | 29 2c 20 72 6f 75 6e 64 |(cp1->lx|), round|
|00005830| 28 63 70 31 2d 3e 6c 79 | 29 2c 20 70 31 2d 3e 78 |(cp1->ly|), p1->x|
|00005840| 2c 0a 58 09 09 20 20 20 | 70 31 2d 3e 79 2c 20 73 |,.X.. |p1->y, s|
|00005850| 2d 3e 66 6f 72 5f 61 72 | 72 6f 77 2c 20 6f 70 2c |->for_ar|row, op,|
|00005860| 20 73 2d 3e 63 6f 6c 6f | 72 29 3b 0a 58 7d 0a 58 | s->colo|r);.X}.X|
|00005870| 0a 58 64 72 61 77 5f 6f | 70 65 6e 5f 73 70 6c 69 |.Xdraw_o|pen_spli|
|00005880| 6e 65 28 73 70 6c 69 6e | 65 2c 20 6f 70 29 0a 58 |ne(splin|e, op).X|
|00005890| 20 20 20 20 46 5f 73 70 | 6c 69 6e 65 09 20 20 20 | F_sp|line. |
|000058a0| 2a 73 70 6c 69 6e 65 3b | 0a 58 20 20 20 20 69 6e |*spline;|.X in|
|000058b0| 74 09 09 20 20 20 20 6f | 70 3b 0a 58 7b 0a 58 20 |t.. o|p;.X{.X |
|000058c0| 20 20 20 46 5f 70 6f 69 | 6e 74 09 20 20 20 2a 70 | F_poi|nt. *p|
|000058d0| 3b 0a 58 20 20 20 20 66 | 6c 6f 61 74 09 20 20 20 |;.X f|loat. |
|000058e0| 20 63 78 31 2c 20 63 79 | 31 2c 20 63 78 32 2c 20 | cx1, cy|1, cx2, |
|000058f0| 63 79 32 2c 20 63 78 33 | 2c 20 63 79 33 2c 20 63 |cy2, cx3|, cy3, c|
|00005900| 78 34 2c 20 63 79 34 3b | 0a 58 20 20 20 20 66 6c |x4, cy4;|.X fl|
|00005910| 6f 61 74 09 20 20 20 20 | 78 31 2c 20 79 31 2c 20 |oat. |x1, y1, |
|00005920| 78 32 2c 20 79 32 3b 0a | 58 0a 58 20 20 20 20 69 |x2, y2;.|X.X i|
|00005930| 66 20 28 21 69 6e 69 74 | 5f 70 6f 69 6e 74 5f 61 |f (!init|_point_a|
|00005940| 72 72 61 79 28 33 30 30 | 2c 20 32 30 30 29 29 0a |rray(300|, 200)).|
|00005950| 58 09 72 65 74 75 72 6e | 3b 0a 58 0a 58 20 20 20 |X.return|;.X.X |
|00005960| 20 70 20 3d 20 73 70 6c | 69 6e 65 2d 3e 70 6f 69 | p = spl|ine->poi|
|00005970| 6e 74 73 3b 0a 58 20 20 | 20 20 78 31 20 3d 20 70 |nts;.X | x1 = p|
|00005980| 2d 3e 78 3b 0a 58 20 20 | 20 20 79 31 20 3d 20 70 |->x;.X | y1 = p|
|00005990| 2d 3e 79 3b 0a 58 20 20 | 20 20 70 20 3d 20 70 2d |->y;.X | p = p-|
|000059a0| 3e 6e 65 78 74 3b 0a 58 | 20 20 20 20 78 32 20 3d |>next;.X| x2 =|
|000059b0| 20 70 2d 3e 78 3b 0a 58 | 20 20 20 20 79 32 20 3d | p->x;.X| y2 =|
|000059c0| 20 70 2d 3e 79 3b 0a 58 | 20 20 20 20 63 78 31 20 | p->y;.X| cx1 |
|000059d0| 3d 20 28 78 31 20 2b 20 | 78 32 29 20 2f 20 32 3b |= (x1 + |x2) / 2;|
|000059e0| 0a 58 20 20 20 20 63 79 | 31 20 3d 20 28 79 31 20 |.X cy|1 = (y1 |
|000059f0| 2b 20 79 32 29 20 2f 20 | 32 3b 0a 58 20 20 20 20 |+ y2) / |2;.X |
|00005a00| 63 78 32 20 3d 20 28 63 | 78 31 20 2b 20 78 32 29 |cx2 = (c|x1 + x2)|
|00005a10| 20 2f 20 32 3b 0a 58 20 | 20 20 20 63 79 32 20 3d | / 2;.X | cy2 =|
|00005a20| 20 28 63 79 31 20 2b 20 | 79 32 29 20 2f 20 32 3b | (cy1 + |y2) / 2;|
|00005a30| 0a 58 20 20 20 20 69 66 | 20 28 73 70 6c 69 6e 65 |.X if| (spline|
|00005a40| 2d 3e 62 61 63 6b 5f 61 | 72 72 6f 77 29 09 2f 2a |->back_a|rrow)./*|
|00005a50| 20 62 61 63 6b 77 61 72 | 64 20 61 72 72 6f 77 20 | backwar|d arrow |
|00005a60| 20 2a 2f 0a 58 09 64 72 | 61 77 5f 61 72 72 6f 77 | */.X.dr|aw_arrow|
|00005a70| 28 28 69 6e 74 29 20 78 | 32 2c 20 28 69 6e 74 29 |((int) x|2, (int)|
|00005a80| 20 79 32 2c 20 28 69 6e | 74 29 20 78 31 2c 20 28 | y2, (in|t) x1, (|
|00005a90| 69 6e 74 29 20 79 31 2c | 0a 58 09 09 20 20 20 73 |int) y1,|.X.. s|
|00005aa0| 70 6c 69 6e 65 2d 3e 62 | 61 63 6b 5f 61 72 72 6f |pline->b|ack_arro|
|00005ab0| 77 2c 20 6f 70 2c 20 73 | 70 6c 69 6e 65 2d 3e 63 |w, op, s|pline->c|
|00005ac0| 6f 6c 6f 72 29 3b 0a 58 | 20 20 20 20 61 64 64 5f |olor);.X| add_|
|00005ad0| 70 6f 69 6e 74 28 28 69 | 6e 74 29 20 78 31 2c 20 |point((i|nt) x1, |
|00005ae0| 28 69 6e 74 29 20 79 31 | 29 3b 0a 58 0a 58 20 20 |(int) y1|);.X.X |
|00005af0| 20 20 66 6f 72 20 28 70 | 20 3d 20 70 2d 3e 6e 65 | for (p| = p->ne|
|00005b00| 78 74 3b 20 70 20 21 3d | 20 4e 55 4c 4c 3b 20 70 |xt; p !=| NULL; p|
|00005b10| 20 3d 20 70 2d 3e 6e 65 | 78 74 29 20 7b 0a 58 09 | = p->ne|xt) {.X.|
|00005b20| 78 31 20 3d 20 78 32 3b | 0a 58 09 79 31 20 3d 20 |x1 = x2;|.X.y1 = |
|00005b30| 79 32 3b 0a 58 09 78 32 | 20 3d 20 70 2d 3e 78 3b |y2;.X.x2| = p->x;|
|00005b40| 0a 58 09 79 32 20 3d 20 | 70 2d 3e 79 3b 0a 58 09 |.X.y2 = |p->y;.X.|
|00005b50| 63 78 34 20 3d 20 28 78 | 31 20 2b 20 78 32 29 20 |cx4 = (x|1 + x2) |
|00005b60| 2f 20 32 3b 0a 58 09 63 | 79 34 20 3d 20 28 79 31 |/ 2;.X.c|y4 = (y1|
|00005b70| 20 2b 20 79 32 29 20 2f | 20 32 3b 0a 58 09 63 78 | + y2) /| 2;.X.cx|
|00005b80| 33 20 3d 20 28 78 31 20 | 2b 20 63 78 34 29 20 2f |3 = (x1 |+ cx4) /|
|00005b90| 20 32 3b 0a 58 09 63 79 | 33 20 3d 20 28 79 31 20 | 2;.X.cy|3 = (y1 |
|00005ba0| 2b 20 63 79 34 29 20 2f | 20 32 3b 0a 58 09 71 75 |+ cy4) /| 2;.X.qu|
|00005bb0| 61 64 72 61 74 69 63 5f | 73 70 6c 69 6e 65 28 63 |adratic_|spline(c|
|00005bc0| 78 31 2c 20 63 79 31 2c | 20 63 78 32 2c 20 63 79 |x1, cy1,| cx2, cy|
|00005bd0| 32 2c 20 63 78 33 2c 20 | 63 79 33 2c 20 63 78 34 |2, cx3, |cy3, cx4|
|00005be0| 2c 20 63 79 34 2c 20 6f | 70 2c 0a 58 09 09 09 20 |, cy4, o|p,.X... |
|00005bf0| 73 70 6c 69 6e 65 2d 3e | 74 68 69 63 6b 6e 65 73 |spline->|thicknes|
|00005c00| 73 2c 20 73 70 6c 69 6e | 65 2d 3e 73 74 79 6c 65 |s, splin|e->style|
|00005c10| 2c 20 73 70 6c 69 6e 65 | 2d 3e 73 74 79 6c 65 5f |, spline|->style_|
|00005c20| 76 61 6c 2c 0a 58 09 09 | 09 20 73 70 6c 69 6e 65 |val,.X..|. spline|
|00005c30| 2d 3e 63 6f 6c 6f 72 29 | 3b 0a 58 09 63 78 31 20 |->color)|;.X.cx1 |
|00005c40| 3d 20 63 78 34 3b 0a 58 | 09 63 79 31 20 3d 20 63 |= cx4;.X|.cy1 = c|
|00005c50| 79 34 3b 0a 58 09 63 78 | 32 20 3d 20 28 63 78 31 |y4;.X.cx|2 = (cx1|
|00005c60| 20 2b 20 78 32 29 20 2f | 20 32 3b 0a 58 09 63 79 | + x2) /| 2;.X.cy|
|00005c70| 32 20 3d 20 28 63 79 31 | 20 2b 20 79 32 29 20 2f |2 = (cy1| + y2) /|
|00005c80| 20 32 3b 0a 58 20 20 20 | 20 7d 0a 58 0a 58 20 20 | 2;.X | }.X.X |
|00005c90| 20 20 61 64 64 5f 70 6f | 69 6e 74 28 72 6f 75 6e | add_po|int(roun|
|00005ca0| 64 28 63 78 31 29 2c 20 | 72 6f 75 6e 64 28 63 79 |d(cx1), |round(cy|
|00005cb0| 31 29 29 3b 0a 58 20 20 | 20 20 61 64 64 5f 70 6f |1));.X | add_po|
|00005cc0| 69 6e 74 28 28 69 6e 74 | 29 20 78 32 2c 20 28 69 |int((int|) x2, (i|
|00005cd0| 6e 74 29 20 79 32 29 3b | 0a 58 0a 58 20 20 20 20 |nt) y2);|.X.X |
|00005ce0| 64 72 61 77 5f 70 6f 69 | 6e 74 5f 61 72 72 61 79 |draw_poi|nt_array|
|00005cf0| 28 63 61 6e 76 61 73 5f | 77 69 6e 2c 20 6f 70 2c |(canvas_|win, op,|
|00005d00| 20 73 70 6c 69 6e 65 2d | 3e 74 68 69 63 6b 6e 65 | spline-|>thickne|
|00005d10| 73 73 2c 20 73 70 6c 69 | 6e 65 2d 3e 73 74 79 6c |ss, spli|ne->styl|
|00005d20| 65 2c 0a 58 09 09 20 20 | 20 20 20 73 70 6c 69 6e |e,.X.. | splin|
|00005d30| 65 2d 3e 73 74 79 6c 65 | 5f 76 61 6c 2c 20 73 70 |e->style|_val, sp|
|00005d40| 6c 69 6e 65 2d 3e 66 69 | 6c 6c 5f 73 74 79 6c 65 |line->fi|ll_style|
|00005d50| 2c 20 73 70 6c 69 6e 65 | 2d 3e 63 6f 6c 6f 72 29 |, spline|->color)|
|00005d60| 3b 0a 58 0a 58 20 20 20 | 20 69 66 20 28 73 70 6c |;.X.X | if (spl|
|00005d70| 69 6e 65 2d 3e 66 6f 72 | 5f 61 72 72 6f 77 29 09 |ine->for|_arrow).|
|00005d80| 2f 2a 20 66 6f 72 77 61 | 72 64 20 61 72 72 6f 77 |/* forwa|rd arrow|
|00005d90| 20 20 2a 2f 0a 58 09 64 | 72 61 77 5f 61 72 72 6f | */.X.d|raw_arro|
|00005da0| 77 28 28 69 6e 74 29 20 | 78 31 2c 20 28 69 6e 74 |w((int) |x1, (int|
|00005db0| 29 20 79 31 2c 20 28 69 | 6e 74 29 20 78 32 2c 20 |) y1, (i|nt) x2, |
|00005dc0| 28 69 6e 74 29 20 79 32 | 2c 0a 58 09 09 20 20 20 |(int) y2|,.X.. |
|00005dd0| 73 70 6c 69 6e 65 2d 3e | 66 6f 72 5f 61 72 72 6f |spline->|for_arro|
|00005de0| 77 2c 20 6f 70 2c 20 73 | 70 6c 69 6e 65 2d 3e 63 |w, op, s|pline->c|
|00005df0| 6f 6c 6f 72 29 3b 0a 58 | 7d 0a 58 0a 58 64 72 61 |olor);.X|}.X.Xdra|
|00005e00| 77 5f 63 6c 6f 73 65 64 | 5f 73 70 6c 69 6e 65 28 |w_closed|_spline(|
|00005e10| 73 70 6c 69 6e 65 2c 20 | 6f 70 29 0a 58 20 20 20 |spline, |op).X |
|00005e20| 20 46 5f 73 70 6c 69 6e | 65 09 20 20 20 2a 73 70 | F_splin|e. *sp|
|00005e30| 6c 69 6e 65 3b 0a 58 20 | 20 20 20 69 6e 74 09 09 |line;.X | int..|
|00005e40| 20 20 20 20 6f 70 3b 0a | 58 7b 0a 58 20 20 20 20 | op;.|X{.X |
|00005e50| 46 5f 70 6f 69 6e 74 09 | 20 20 20 2a 70 3b 0a 58 |F_point.| *p;.X|
|00005e60| 20 20 20 20 66 6c 6f 61 | 74 09 20 20 20 20 63 78 | floa|t. cx|
|00005e70| 31 2c 20 63 79 31 2c 20 | 63 78 32 2c 20 63 79 32 |1, cy1, |cx2, cy2|
|00005e80| 2c 20 63 78 33 2c 20 63 | 79 33 2c 20 63 78 34 2c |, cx3, c|y3, cx4,|
|00005e90| 20 63 79 34 3b 0a 58 20 | 20 20 20 66 6c 6f 61 74 | cy4;.X | float|
|00005ea0| 09 20 20 20 20 78 31 2c | 20 79 31 2c 20 78 32 2c |. x1,| y1, x2,|
|00005eb0| 20 79 32 3b 0a 58 0a 58 | 20 20 20 20 69 66 20 28 | y2;.X.X| if (|
|00005ec0| 21 69 6e 69 74 5f 70 6f | 69 6e 74 5f 61 72 72 61 |!init_po|int_arra|
|00005ed0| 79 28 33 30 30 2c 20 32 | 30 30 29 29 0a 58 09 72 |y(300, 2|00)).X.r|
|00005ee0| 65 74 75 72 6e 3b 0a 58 | 0a 58 20 20 20 20 70 20 |eturn;.X|.X p |
|00005ef0| 3d 20 73 70 6c 69 6e 65 | 2d 3e 70 6f 69 6e 74 73 |= spline|->points|
|00005f00| 3b 0a 58 20 20 20 20 78 | 31 20 3d 20 70 2d 3e 78 |;.X x|1 = p->x|
|00005f10| 3b 0a 58 20 20 20 20 79 | 31 20 3d 20 70 2d 3e 79 |;.X y|1 = p->y|
|00005f20| 3b 0a 58 20 20 20 20 70 | 20 3d 20 70 2d 3e 6e 65 |;.X p| = p->ne|
|00005f30| 78 74 3b 0a 58 20 20 20 | 20 78 32 20 3d 20 70 2d |xt;.X | x2 = p-|
|00005f40| 3e 78 3b 0a 58 20 20 20 | 20 79 32 20 3d 20 70 2d |>x;.X | y2 = p-|
|00005f50| 3e 79 3b 0a 58 20 20 20 | 20 63 78 31 20 3d 20 28 |>y;.X | cx1 = (|
|00005f60| 78 31 20 2b 20 78 32 29 | 20 2f 20 32 3b 0a 58 20 |x1 + x2)| / 2;.X |
|00005f70| 20 20 20 63 79 31 20 3d | 20 28 79 31 20 2b 20 79 | cy1 =| (y1 + y|
|00005f80| 32 29 20 2f 20 32 3b 0a | 58 20 20 20 20 63 78 32 |2) / 2;.|X cx2|
|00005f90| 20 3d 20 28 78 31 20 2b | 20 33 20 2a 20 78 32 29 | = (x1 +| 3 * x2)|
|00005fa0| 20 2f 20 34 3b 0a 58 20 | 20 20 20 63 79 32 20 3d | / 4;.X | cy2 =|
|00005fb0| 20 28 79 31 20 2b 20 33 | 20 2a 20 79 32 29 20 2f | (y1 + 3| * y2) /|
|00005fc0| 20 34 3b 0a 58 0a 58 20 | 20 20 20 66 6f 72 20 28 | 4;.X.X | for (|
|00005fd0| 70 20 3d 20 70 2d 3e 6e | 65 78 74 3b 20 70 20 21 |p = p->n|ext; p !|
|00005fe0| 3d 20 4e 55 4c 4c 3b 20 | 70 20 3d 20 70 2d 3e 6e |= NULL; |p = p->n|
|00005ff0| 65 78 74 29 20 7b 0a 58 | 09 78 31 20 3d 20 78 32 |ext) {.X|.x1 = x2|
|00006000| 3b 0a 58 09 79 31 20 3d | 20 79 32 3b 0a 58 09 78 |;.X.y1 =| y2;.X.x|
|00006010| 32 20 3d 20 70 2d 3e 78 | 3b 0a 58 09 79 32 20 3d |2 = p->x|;.X.y2 =|
|00006020| 20 70 2d 3e 79 3b 0a 58 | 09 63 78 34 20 3d 20 28 | p->y;.X|.cx4 = (|
|00006030| 78 31 20 2b 20 78 32 29 | 20 2f 20 32 3b 0a 58 09 |x1 + x2)| / 2;.X.|
|00006040| 63 79 34 20 3d 20 28 79 | 31 20 2b 20 79 32 29 20 |cy4 = (y|1 + y2) |
|00006050| 2f 20 32 3b 0a 58 09 63 | 78 33 20 3d 20 28 78 31 |/ 2;.X.c|x3 = (x1|
|00006060| 20 2b 20 63 78 34 29 20 | 2f 20 32 3b 0a 58 09 63 | + cx4) |/ 2;.X.c|
|00006070| 79 33 20 3d 20 28 79 31 | 20 2b 20 63 79 34 29 20 |y3 = (y1| + cy4) |
|00006080| 2f 20 32 3b 0a 58 09 71 | 75 61 64 72 61 74 69 63 |/ 2;.X.q|uadratic|
|00006090| 5f 73 70 6c 69 6e 65 28 | 63 78 31 2c 20 63 79 31 |_spline(|cx1, cy1|
|000060a0| 2c 20 63 78 32 2c 20 63 | 79 32 2c 20 63 78 33 2c |, cx2, c|y2, cx3,|
|000060b0| 20 63 79 33 2c 20 63 78 | 34 2c 20 63 79 34 2c 20 | cy3, cx|4, cy4, |
|000060c0| 6f 70 2c 0a 58 09 09 09 | 20 73 70 6c 69 6e 65 2d |op,.X...| spline-|
|000060d0| 3e 74 68 69 63 6b 6e 65 | 73 73 2c 20 73 70 6c 69 |>thickne|ss, spli|
|000060e0| 6e 65 2d 3e 73 74 79 6c | 65 2c 20 73 70 6c 69 6e |ne->styl|e, splin|
|000060f0| 65 2d 3e 73 74 79 6c 65 | 5f 76 61 6c 2c 0a 58 09 |e->style|_val,.X.|
|00006100| 09 09 20 73 70 6c 69 6e | 65 2d 3e 63 6f 6c 6f 72 |.. splin|e->color|
|00006110| 29 3b 0a 58 09 63 78 31 | 20 3d 20 63 78 34 3b 0a |);.X.cx1| = cx4;.|
|00006120| 58 09 63 79 31 20 3d 20 | 63 79 34 3b 0a 58 09 63 |X.cy1 = |cy4;.X.c|
|00006130| 78 32 20 3d 20 28 63 78 | 31 20 2b 20 78 32 29 20 |x2 = (cx|1 + x2) |
|00006140| 2f 20 32 3b 0a 58 09 63 | 79 32 20 3d 20 28 63 79 |/ 2;.X.c|y2 = (cy|
|00006150| 31 20 2b 20 79 32 29 20 | 2f 20 32 3b 0a 58 20 20 |1 + y2) |/ 2;.X |
|00006160| 20 20 7d 0a 58 20 20 20 | 20 78 31 20 3d 20 78 32 | }.X | x1 = x2|
|00006170| 3b 0a 58 20 20 20 20 79 | 31 20 3d 20 79 32 3b 0a |;.X y|1 = y2;.|
|00006180| 58 20 20 20 20 70 20 3d | 20 73 70 6c 69 6e 65 2d |X p =| spline-|
|00006190| 3e 70 6f 69 6e 74 73 2d | 3e 6e 65 78 74 3b 0a 58 |>points-|>next;.X|
|000061a0| 20 20 20 20 78 32 20 3d | 20 70 2d 3e 78 3b 0a 58 | x2 =| p->x;.X|
|000061b0| 20 20 20 20 79 32 20 3d | 20 70 2d 3e 79 3b 0a 58 | y2 =| p->y;.X|
|000061c0| 20 20 20 20 63 78 34 20 | 3d 20 28 78 31 20 2b 20 | cx4 |= (x1 + |
|000061d0| 78 32 29 20 2f 20 32 3b | 0a 58 20 20 20 20 63 79 |x2) / 2;|.X cy|
|000061e0| 34 20 3d 20 28 79 31 20 | 2b 20 79 32 29 20 2f 20 |4 = (y1 |+ y2) / |
|000061f0| 32 3b 0a 58 20 20 20 20 | 63 78 33 20 3d 20 28 78 |2;.X |cx3 = (x|
|00006200| 31 20 2b 20 63 78 34 29 | 20 2f 20 32 3b 0a 58 20 |1 + cx4)| / 2;.X |
|00006210| 20 20 20 63 79 33 20 3d | 20 28 79 31 20 2b 20 63 | cy3 =| (y1 + c|
|00006220| 79 34 29 20 2f 20 32 3b | 0a 58 20 20 20 20 71 75 |y4) / 2;|.X qu|
|00006230| 61 64 72 61 74 69 63 5f | 73 70 6c 69 6e 65 28 63 |adratic_|spline(c|
|00006240| 78 31 2c 20 63 79 31 2c | 20 63 78 32 2c 20 63 79 |x1, cy1,| cx2, cy|
|00006250| 32 2c 20 63 78 33 2c 20 | 63 79 33 2c 20 63 78 34 |2, cx3, |cy3, cx4|
|00006260| 2c 20 63 79 34 2c 20 6f | 70 2c 0a 58 09 09 20 20 |, cy4, o|p,.X.. |
|00006270| 20 20 20 73 70 6c 69 6e | 65 2d 3e 74 68 69 63 6b | splin|e->thick|
|00006280| 6e 65 73 73 2c 20 73 70 | 6c 69 6e 65 2d 3e 73 74 |ness, sp|line->st|
|00006290| 79 6c 65 2c 20 73 70 6c | 69 6e 65 2d 3e 73 74 79 |yle, spl|ine->sty|
|000062a0| 6c 65 5f 76 61 6c 2c 0a | 58 09 09 20 20 20 20 20 |le_val,.|X.. |
|000062b0| 73 70 6c 69 6e 65 2d 3e | 63 6f 6c 6f 72 29 3b 0a |spline->|color);.|
|000062c0| 58 0a 58 20 20 20 20 61 | 64 64 5f 70 6f 69 6e 74 |X.X a|dd_point|
|000062d0| 28 28 69 6e 74 29 20 63 | 78 34 2c 20 28 69 6e 74 |((int) c|x4, (int|
|000062e0| 29 20 63 79 34 29 3b 0a | 58 0a 58 20 20 20 20 64 |) cy4);.|X.X d|
|000062f0| 72 61 77 5f 70 6f 69 6e | 74 5f 61 72 72 61 79 28 |raw_poin|t_array(|
|00006300| 63 61 6e 76 61 73 5f 77 | 69 6e 2c 20 6f 70 2c 20 |canvas_w|in, op, |
|00006310| 73 70 6c 69 6e 65 2d 3e | 74 68 69 63 6b 6e 65 73 |spline->|thicknes|
|00006320| 73 2c 20 73 70 6c 69 6e | 65 2d 3e 73 74 79 6c 65 |s, splin|e->style|
|00006330| 2c 0a 58 09 09 20 20 20 | 20 20 73 70 6c 69 6e 65 |,.X.. | spline|
|00006340| 2d 3e 73 74 79 6c 65 5f | 76 61 6c 2c 20 73 70 6c |->style_|val, spl|
|00006350| 69 6e 65 2d 3e 66 69 6c | 6c 5f 73 74 79 6c 65 2c |ine->fil|l_style,|
|00006360| 20 73 70 6c 69 6e 65 2d | 3e 63 6f 6c 6f 72 29 3b | spline-|>color);|
|00006370| 0a 58 7d 0a 58 0a 58 0a | 58 2f 2a 2a 2a 2a 2a 2a |.X}.X.X.|X/******|
|00006380| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00006390| 2a 20 54 45 58 54 20 2a | 2a 2a 2a 2a 2a 2a 2a 2a |* TEXT *|********|
|000063a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000063b0| 2a 2a 2f 0a 58 0a 58 73 | 74 61 74 69 63 20 63 68 |**/.X.Xs|tatic ch|
|000063c0| 61 72 20 20 20 20 2a 68 | 69 64 64 65 6e 5f 74 65 |ar *h|idden_te|
|000063d0| 78 74 5f 73 74 72 69 6e | 67 20 3d 20 22 3c 3c 3e |xt_strin|g = "<<>|
|000063e0| 3e 22 3b 0a 58 0a 58 64 | 72 61 77 5f 74 65 78 74 |>";.X.Xd|raw_text|
|000063f0| 28 74 65 78 74 2c 20 6f | 70 29 0a 58 20 20 20 20 |(text, o|p).X |
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.