DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics
Index: D I L M P R S T U X a b c e g h i l m o p r s u x

⟦ee38ad226⟧ Tarfile

    Length: 1574564 (0x1806a4)
    Types: Tarfile
    Notes: Tarfile, Uncompressed file

Derivation

└─⟦276d19d6e⟧ Bits:30007243 EUUGD5_I: X11R5
    └─⟦399fbce15⟧ »./mit-1/mit-1.00« 
        └─⟦this⟧ 

Tar file

mode link uid gid size mtime name artifact
drwxrwxrw- 0 11000 102 0 1991-08-29T14:03:25 mit «none»
-r--r--r-- 0 11000 102 2918 1991-07-27T18:13:38 mit/Imakefile ⟦018fbc9c7⟧ TextFile
-r--r--r-- 0 11000 102 2393 1991-08-01T01:29:44 mit/LABEL ⟦f6b9e65f0⟧ TextFile
-r--r--r-- 0 11000 102 178 1991-07-20T16:25:42 mit/Makefile ⟦d10487c9d⟧ TextFile
-r--r--r-- 0 11000 102 1713 1991-07-22T01:53:30 mit/Makefile.ini ⟦e081bb558⟧ TextFile
-r--r--r-- 0 11000 102 230021 1991-08-29T14:03:25 mit/RELNOTES.PS ⟦640150535⟧ TextFile
-r--r--r-- 0 11000 102 87026 1991-08-29T13:58:47 mit/RELNOTES.TXT ⟦f17ef2de4⟧ TextFile
-r--r--r-- 0 11000 102 81429 1991-08-29T13:58:47 mit/RELNOTES.ms ⟦c9602cf3c⟧ TextFile
-r--r--r-- 0 11000 102 2009 1991-08-27T23:29:25 mit/bug-report ⟦82edfb286⟧ TextFile
drwxrwxrw- 0 11000 102 0 1991-08-29T13:52:50 mit/config «none»
-r--r--r-- 0 11000 102 522 1991-05-10T21:19:51 mit/config/DGUX.cf ⟦bc5eb9cb8⟧ TextFile
-r--r--r-- 0 11000 102 44486 1991-08-22T21:04:24 mit/config/Imake.rules ⟦1fe50682d⟧ TextFile
-r--r--r-- 0 11000 102 21444 1991-07-30T19:00:17 mit/config/Imake.tmpl ⟦2d83cdf50⟧ TextFile
-r--r--r-- 0 11000 102 638 1991-07-24T18:40:01 mit/config/Imakefile ⟦2a9a09138⟧ TextFile
-r--r--r-- 0 11000 102 3041 1991-07-27T17:11:12 mit/config/Library.tmpl ⟦33dade2db⟧ TextFile
-r--r--r-- 0 11000 102 1125 1991-04-15T21:59:57 mit/config/Makefile.ini ⟦c46e8118a⟧ TextFile
-r--r--r-- 0 11000 102 2429 1991-07-31T00:48:49 mit/config/Mips.cf ⟦b26693bd5⟧ TextFile
-r--r--r-- 0 11000 102 18890 1991-07-31T02:57:50 mit/config/Project.tmpl ⟦10ecd8dbc⟧ TextFile
-r--r--r-- 0 11000 102 12155 1991-07-30T17:55:36 mit/config/README ⟦08b59f9be⟧ TextFile
-r--r--r-- 0 11000 102 712 1991-05-06T23:00:55 mit/config/Server.tmpl ⟦3342da455⟧ TextFile
-r--r--r-- 0 11000 102 657 1991-08-25T19:39:59 mit/config/apollo.cf ⟦106cc9da3⟧ TextFile
-r--r--r-- 0 11000 102 692 1991-07-29T14:44:35 mit/config/att.cf ⟦19b9c6bdb⟧ TextFile
-r--r--r-- 0 11000 102 879 1991-07-30T16:11:39 mit/config/bsd.cf ⟦797802a87⟧ TextFile
-r--r--r-- 0 11000 102 559 1989-10-16T16:09:24 mit/config/ccimake.c ⟦cb265214b⟧ TextFile
-r--r--r-- 0 11000 102 2583 1991-07-29T14:32:28 mit/config/convex.cf ⟦8d294f596⟧ TextFile
-r--r--r-- 0 11000 102 992 1991-07-16T20:25:00 mit/config/cray.cf ⟦662a36c04⟧ TextFile
-r--r--r-- 0 11000 102 321 1991-07-03T18:48:21 mit/config/generic.cf ⟦7b7dfa649⟧ TextFile
-r--r--r-- 0 11000 102 1039 1991-07-29T02:39:42 mit/config/hp.cf ⟦0d9ad4f52⟧ TextFile
-r--r--r-- 0 11000 102 6679 1991-07-30T23:01:24 mit/config/ibm.cf ⟦9b771adb7⟧ TextFile
-r--r--r-- 0 11000 102 2142 1991-05-10T13:28:10 mit/config/ibmLib.rules ⟦0c5902bba⟧ TextFile
-r--r--r-- 0 11000 102 1375 1991-05-04T15:49:30 mit/config/ibmLib.tmpl ⟦8bbc0ee0a⟧ TextFile
-r--r--r-- 0 11000 102 19390 1991-07-25T21:51:12 mit/config/imake.c ⟦76804337c⟧ TextFile
-r--r--r-- 0 11000 102 7473 1991-08-01T03:44:46 mit/config/imake.man ⟦ef2bc91df⟧ TextFile
-r--r--r-- 0 11000 102 7657 1991-08-25T19:39:59 mit/config/imakemdep.h ⟦b36f817f2⟧ TextFile
-r--r--r-- 0 11000 102 2191 1991-08-26T15:26:30 mit/config/luna.cf ⟦e1fe59df3⟧ TextFile
-r--r--r-- 0 11000 102 975 1991-07-30T16:12:20 mit/config/macII.cf ⟦2ef6438b9⟧ TextFile
-r--r--r-- 0 11000 102 1446 1991-08-15T16:06:44 mit/config/moto.cf ⟦f1a253d22⟧ TextFile
-r--r--r-- 0 11000 102 0 1991-02-23T17:22:13 mit/config/noop.rules «none»
-r--r--r-- 0 11000 102 3045 1991-04-09T23:15:27 mit/config/oldlib.rules ⟦65dfa4cbe⟧ TextFile
-r--r--r-- 0 11000 102 791 1991-07-30T15:35:12 mit/config/pegasus.cf ⟦69f61ecff⟧ TextFile
-r--r--r-- 0 11000 102 564 1989-12-17T23:06:14 mit/config/rtcchack.bac ⟦d05e1dc09⟧ TextFile
-r--r--r-- 0 11000 102 2545 1991-07-29T02:39:50 mit/config/sgi.cf ⟦3f71e25dc⟧ TextFile
-r--r--r-- 0 11000 102 1705 1991-03-25T14:52:32 mit/config/sgiLib.rules ⟦d7bc8e76a⟧ TextFile
-r--r--r-- 0 11000 102 2002 1991-08-01T07:29:28 mit/config/site.def ⟦67fa994ab⟧ TextFile
-r--r--r-- 0 11000 102 1485 1991-08-21T19:24:23 mit/config/sony.cf ⟦8df11aa47⟧ TextFile
-r--r--r-- 0 11000 102 1568 1991-07-30T15:35:28 mit/config/sun.cf ⟦f7e24db50⟧ TextFile
-r--r--r-- 0 11000 102 2476 1991-03-24T22:56:13 mit/config/sunLib.rules ⟦aae782ea4⟧ TextFile
-r--r--r-- 0 11000 102 1888 1991-07-31T15:33:06 mit/config/sunLib.tmpl ⟦f31f695fb⟧ TextFile
-r--r--r-- 0 11000 102 2186 1991-07-19T19:39:37 mit/config/sv4Lib.rules ⟦154896e60⟧ TextFile
-r--r--r-- 0 11000 102 2098 1991-07-19T19:39:09 mit/config/sv4Lib.tmpl ⟦003d44f47⟧ TextFile
-r--r--r-- 0 11000 102 1207 1991-07-30T16:12:58 mit/config/ultrix.cf ⟦fe1d05dd1⟧ TextFile
-r--r--r-- 0 11000 102 4606 1991-08-20T18:05:20 mit/config/x386.cf ⟦f022ee61b⟧ TextFile
drwxrwxrw- 0 11000 102 0 1991-08-29T13:52:51 mit/extensions «none»
drwxrwxrw- 0 11000 102 0 1991-07-24T19:51:00 mit/extensions/include «none»
-r--r--r-- 0 11000 102 513 1991-07-17T03:08:48 mit/extensions/include/Imakefile ⟦b6a6c43a9⟧ TextFile
-r--r--r-- 0 11000 102 1532 1991-07-12T14:07:24 mit/extensions/include/MITMisc.h ⟦123e43826⟧ TextFile
drwxrwxrw- 0 11000 102 0 1991-08-26T20:11:50 mit/extensions/include/PEX «none»
-r--r--r-- 0 11000 102 1453 1991-07-12T21:36:07 mit/extensions/include/PEX/Imakefile ⟦ee8b158df⟧ TextFile
-r--r--r-- 0 11000 102 27264 1991-08-26T20:11:50 mit/extensions/include/PEX/PEX.h ⟦cb751db93⟧ TextFile
-r--r--r-- 0 11000 102 1516 1991-02-16T14:47:05 mit/extensions/include/PEX/PEXErr.h ⟦4a1c07a61⟧ TextFile
-r--r--r-- 0 11000 102 5201 1991-02-16T14:47:08 mit/extensions/include/PEX/PEXOCs.h ⟦e77f9fbbb⟧ TextFile
-r--r--r-- 0 11000 102 7136 1991-02-16T14:47:09 mit/extensions/include/PEX/PEXfuncs.h ⟦9129693d0⟧ TextFile
-r--r--r-- 0 11000 102 1412 1991-02-16T14:46:59 mit/extensions/include/PEX/PEXmacs.h ⟦b82f47d46⟧ TextFile
-r--r--r-- 0 11000 102 46090 1991-07-01T20:19:30 mit/extensions/include/PEX/PEXproto.h ⟦e643f1ea0⟧ TextFile
-r--r--r-- 0 11000 102 12866 1991-07-01T20:19:15 mit/extensions/include/PEX/PEXprotost.h ⟦231cd8adb⟧ TextFile
-r--r--r-- 0 11000 102 1892 1991-07-01T20:19:48 mit/extensions/include/PEX/pexSwap.h ⟦ebff854f0⟧ TextFile
-r--r--r-- 0 11000 102 7074 1991-07-24T19:33:24 mit/extensions/include/XI.h ⟦12e526bb4⟧ TextFile
-r--r--r-- 0 11000 102 23962 1991-07-24T19:34:41 mit/extensions/include/XInput.h ⟦c32190a75⟧ TextFile
-r--r--r-- 0 11000 102 33821 1991-07-24T19:50:56 mit/extensions/include/XIproto.h ⟦2a51dd423⟧ TextFile
-r--r--r-- 0 11000 102 3712 1991-07-12T13:55:21 mit/extensions/include/XShm.h ⟦64a947132⟧ TextFile
-r--r--r-- 0 11000 102 1638 1991-07-12T14:28:58 mit/extensions/include/Xext.h ⟦9cf2c9561⟧ TextFile
-r--r--r-- 0 11000 102 4372 1989-12-10T02:12:39 mit/extensions/include/extutil.h ⟦2d61bb584⟧ TextFile
-r--r--r-- 0 11000 102 1737 1990-05-15T22:50:19 mit/extensions/include/mitmiscstr.h ⟦80aaf3d2c⟧ TextFile
-r--r--r-- 0 11000 102 7607 1991-07-12T14:21:24 mit/extensions/include/multibuf.h ⟦4daf71e19⟧ TextFile
-r--r--r-- 0 11000 102 8359 1991-01-05T21:33:04 mit/extensions/include/multibufst.h ⟦47f8cc268⟧ TextFile
-r--r--r-- 0 11000 102 5045 1991-02-17T18:09:37 mit/extensions/include/shape.h ⟦531a0e4a4⟧ TextFile
-r--r--r-- 0 11000 102 6972 1990-06-07T14:08:45 mit/extensions/include/shapestr.h ⟦242710769⟧ TextFile
-r--r--r-- 0 11000 102 4464 1991-07-12T13:19:46 mit/extensions/include/shmstr.h ⟦736a5ca92⟧ TextFile
-r--r--r-- 0 11000 102 10037 1988-10-22T23:55:55 mit/extensions/include/xtestext1.h ⟦95281c5dc⟧ TextFile
drwxrwxrw- 0 11000 102 0 1991-07-23T02:57:25 mit/extensions/lib «none»
drwxrwxrw- 0 11000 102 0 1991-07-23T03:00:24 mit/extensions/lib/PEX «none»
drwxrwxrw- 0 11000 102 0 1991-07-23T03:08:26 mit/extensions/lib/PEX/archive «none»
-r--r--r-- 0 11000 102 1927 1991-07-23T03:08:25 mit/extensions/lib/PEX/archive/Imakefile ⟦f03081dad⟧ TextFile
-r--r--r-- 0 11000 102 5890 1991-07-01T20:20:07 mit/extensions/lib/PEX/archive/ar_conv.c ⟦eb1de89ae⟧ TextFile
-r--r--r-- 0 11000 102 11117 1991-04-04T20:19:21 mit/extensions/lib/PEX/archive/ar_hier.c ⟦911052825⟧ TextFile
-r--r--r-- 0 11000 102 19767 1991-07-10T13:19:12 mit/extensions/lib/PEX/archive/ar_ops.c ⟦a448eae35⟧ TextFile
drwxrwxrw- 0 11000 102 0 1991-08-23T21:22:35 mit/extensions/lib/PEX/c_binding «none»
-r--r--r-- 0 11000 102 2473 1991-07-23T03:07:25 mit/extensions/lib/PEX/c_binding/Imakefile ⟦a6d7444d9⟧ TextFile
-r--r--r-- 0 11000 102 19688 1991-07-12T22:09:01 mit/extensions/lib/PEX/c_binding/cb_ar.c ⟦2d5bba928⟧ TextFile
-r--r--r-- 0 11000 102 4829 1991-04-19T22:53:01 mit/extensions/lib/PEX/c_binding/cb_cell.c ⟦aac8e035b⟧ TextFile
-r--r--r-- 0 11000 102 3136 1991-04-19T22:53:02 mit/extensions/lib/PEX/c_binding/cb_colr.c ⟦8583de180⟧ TextFile
-r--r--r-- 0 11000 102 9674 1991-07-12T22:09:25 mit/extensions/lib/PEX/c_binding/cb_ctrl.c ⟦9ab18b7d9⟧ TextFile
-r--r--r-- 0 11000 102 4716 1991-04-19T22:53:03 mit/extensions/lib/PEX/c_binding/cb_dcue.c ⟦1e7b65947⟧ TextFile
-r--r--r-- 0 11000 102 1464 1991-04-19T22:53:04 mit/extensions/lib/PEX/c_binding/cb_erfn.c ⟦1186c2bb3⟧ TextFile
-r--r--r-- 0 11000 102 1448 1991-04-19T22:53:05 mit/extensions/lib/PEX/c_binding/cb_erhd.c ⟦cf30e8157⟧ TextFile
-r--r--r-- 0 11000 102 7712 1991-04-19T22:53:05 mit/extensions/lib/PEX/c_binding/cb_err.c ⟦90780a5ed⟧ TextFile
-r--r--r-- 0 11000 102 7671 1991-07-12T22:38:31 mit/extensions/lib/PEX/c_binding/cb_esc.c ⟦01bd907b7⟧ TextFile
-r--r--r-- 0 11000 102 27408 1991-07-12T22:39:06 mit/extensions/lib/PEX/c_binding/cb_fill.c ⟦128a1bcbe⟧ TextFile
-r--r--r-- 0 11000 102 86502 1991-07-15T18:21:33 mit/extensions/lib/PEX/c_binding/cb_inp.c ⟦083e514a8⟧ TextFile
-r--r--r-- 0 11000 102 6962 1991-04-19T22:53:09 mit/extensions/lib/PEX/c_binding/cb_lite.c ⟦acabc53b1⟧ TextFile
-r--r--r-- 0 11000 102 2546 1991-04-19T22:53:10 mit/extensions/lib/PEX/c_binding/cb_mf.c ⟦dc9eff7c1⟧ TextFile
-r--r--r-- 0 11000 102 2483 1991-04-19T22:53:11 mit/extensions/lib/PEX/c_binding/cb_nset.c ⟦5cb7b1abe⟧ TextFile
-r--r--r-- 0 11000 102 11042 1991-04-19T22:53:11 mit/extensions/lib/PEX/c_binding/cb_nurb.c ⟦0cd758ca8⟧ TextFile
-r--r--r-- 0 11000 102 7226 1991-04-19T22:53:13 mit/extensions/lib/PEX/c_binding/cb_plin.c ⟦690663a76⟧ TextFile
-r--r--r-- 0 11000 102 5756 1991-04-19T22:53:14 mit/extensions/lib/PEX/c_binding/cb_pmrk.c ⟦cba9d45f6⟧ TextFile
-r--r--r-- 0 11000 102 9736 1991-04-19T22:53:16 mit/extensions/lib/PEX/c_binding/cb_sedt.c ⟦1a99d221d⟧ TextFile
-r--r--r-- 0 11000 102 14294 1991-04-19T22:53:19 mit/extensions/lib/PEX/c_binding/cb_text.c ⟦b89e871ce⟧ TextFile
-r--r--r-- 0 11000 102 8529 1991-07-12T23:53:31 mit/extensions/lib/PEX/c_binding/cb_util.c ⟦0dda729d0⟧ TextFile
-r--r--r-- 0 11000 102 92035 1991-07-12T23:54:12 mit/extensions/lib/PEX/c_binding/cb_ws.c ⟦f35f2956d⟧ TextFile
-r--r--r-- 0 11000 102 98659 1991-08-23T21:22:37 mit/extensions/lib/PEX/c_binding/cb_wst.c ⟦d31b7b260⟧ TextFile
-r--r--r-- 0 11000 102 31999 1991-07-22T23:15:28 mit/extensions/lib/PEX/c_binding/cb_xfut.c «none»
drwxrwxrw- 0 11000 102 0 1991-07-24T20:13:52 mit/extensions/lib/xinput «none»
-r--r--r-- 0 11000 102 2475 1991-07-24T19:39:44 mit/extensions/lib/xinput/Imakefile ⟦5ba9e4b56⟧ TextFile
-r--r--r-- 0 11000 102 2165 1991-07-23T16:26:09 mit/extensions/lib/xinput/XAllowDv.c ⟦ed2123686⟧ TextFile
-r--r--r-- 0 11000 102 3251 1991-07-24T20:13:51 mit/extensions/lib/xinput/XChgDCtl.c ⟦29945000f⟧ TextFile
-r--r--r-- 0 11000 102 5088 1991-02-09T22:48:22 mit/extensions/lib/xinput/XChgFCtl.c ⟦26d52d1d6⟧ TextFile
-r--r--r-- 0 11000 102 2473 1989-12-07T01:40:18 mit/extensions/lib/xinput/XChgKMap.c ⟦7c20441c5⟧ TextFile
-r--r--r-- 0 11000 102 2203 1991-07-23T16:26:34 mit/extensions/lib/xinput/XChgKbd.c ⟦b17b18c98⟧ TextFile
-r--r--r-- 0 11000 102 2292 1991-07-23T16:26:58 mit/extensions/lib/xinput/XChgPnt.c ⟦fa031b4b0⟧ TextFile
-r--r--r-- 0 11000 102 2483 1991-07-23T16:27:18 mit/extensions/lib/xinput/XChgProp.c ⟦0059ac4d0⟧ TextFile
-r--r--r-- 0 11000 102 2074 1989-12-14T01:05:50 mit/extensions/lib/xinput/XCloseDev.c ⟦254ee7f1f⟧ TextFile
-r--r--r-- 0 11000 102 2217 1991-07-23T16:27:36 mit/extensions/lib/xinput/XDevBell.c ⟦56b01108a⟧ TextFile
-r--r--r-- 0 11000 102 18440 1991-07-24T19:45:21 mit/extensions/lib/xinput/XExtInt.c ⟦4c7f03aba⟧ TextFile
-r--r--r-- 0 11000 102 13229 1991-07-17T00:51:25 mit/extensions/lib/xinput/XExtToWire.c ⟦3fb8c2843⟧ TextFile
-r--r--r-- 0 11000 102 1751 1989-12-07T01:41:03 mit/extensions/lib/xinput/XFreeLst.c ⟦331d88231⟧ TextFile
-r--r--r-- 0 11000 102 3378 1991-07-23T16:28:06 mit/extensions/lib/xinput/XGMotion.c ⟦b8f21dafa⟧ TextFile
-r--r--r-- 0 11000 102 2769 1989-12-07T01:40:53 mit/extensions/lib/xinput/XGetBMap.c ⟦b69dbbb8f⟧ TextFile
-r--r--r-- 0 11000 102 4022 1991-07-24T19:43:53 mit/extensions/lib/xinput/XGetDCtl.c ⟦9f544725b⟧ TextFile
-r--r--r-- 0 11000 102 6881 1991-01-26T18:34:45 mit/extensions/lib/xinput/XGetFCtl.c ⟦8460c0582⟧ TextFile
-r--r--r-- 0 11000 102 2741 1990-05-18T15:23:25 mit/extensions/lib/xinput/XGetKMap.c ⟦4e84a8979⟧ TextFile
-r--r--r-- 0 11000 102 2712 1990-05-18T15:23:29 mit/extensions/lib/xinput/XGetMMap.c ⟦afbb5d6ec⟧ TextFile
-r--r--r-- 0 11000 102 2555 1990-05-18T15:23:32 mit/extensions/lib/xinput/XGetProp.c ⟦df83a9eea⟧ TextFile
-r--r--r-- 0 11000 102 2632 1991-02-09T22:51:01 mit/extensions/lib/xinput/XGetVers.c ⟦9b66574de⟧ TextFile
-r--r--r-- 0 11000 102 3121 1991-01-24T21:06:22 mit/extensions/lib/xinput/XGrDvBut.c ⟦37dd39f36⟧ TextFile
-r--r--r-- 0 11000 102 3094 1991-01-24T21:06:56 mit/extensions/lib/xinput/XGrDvKey.c ⟦dd66175ca⟧ TextFile
-r--r--r-- 0 11000 102 2893 1991-07-23T16:28:37 mit/extensions/lib/xinput/XGrabDev.c ⟦56b16cd52⟧ TextFile
-r--r--r-- 0 11000 102 2283 1989-12-07T01:42:18 mit/extensions/lib/xinput/XGtFocus.c ⟦0c24049ea⟧ TextFile
-r--r--r-- 0 11000 102 3105 1991-05-05T20:32:01 mit/extensions/lib/xinput/XGtSelect.c ⟦9bf179833⟧ TextFile
-r--r--r-- 0 11000 102 6187 1991-07-23T16:29:02 mit/extensions/lib/xinput/XListDev.c ⟦aff87c31b⟧ TextFile
-r--r--r-- 0 11000 102 2606 1991-07-23T16:29:23 mit/extensions/lib/xinput/XOpenDev.c ⟦ec6ff9538⟧ TextFile
-r--r--r-- 0 11000 102 4976 1991-02-09T22:53:08 mit/extensions/lib/xinput/XQueryDv.c ⟦9e917272e⟧ TextFile
-r--r--r-- 0 11000 102 2402 1989-12-07T01:42:21 mit/extensions/lib/xinput/XSelect.c ⟦4e4e6c1fb⟧ TextFile
-r--r--r-- 0 11000 102 2536 1989-12-07T01:42:22 mit/extensions/lib/xinput/XSetBMap.c ⟦589440ad5⟧ TextFile
-r--r--r-- 0 11000 102 2647 1991-02-22T20:26:58 mit/extensions/lib/xinput/XSetDVal.c ⟦72fe40e87⟧ TextFile
-r--r--r-- 0 11000 102 2491 1989-12-07T01:42:52 mit/extensions/lib/xinput/XSetMMap.c ⟦2bf31ecf9⟧ TextFile
-r--r--r-- 0 11000 102 2177 1991-02-22T20:25:56 mit/extensions/lib/xinput/XSetMode.c ⟦9506b0176⟧ TextFile
-r--r--r-- 0 11000 102 3116 1989-12-14T01:28:13 mit/extensions/lib/xinput/XSndExEv.c ⟦2fb42e60e⟧ TextFile
-r--r--r-- 0 11000 102 2117 1989-12-07T01:42:54 mit/extensions/lib/xinput/XStFocus.c ⟦df5e74ddd⟧ TextFile
-r--r--r-- 0 11000 102 2077 1989-12-07T01:42:55 mit/extensions/lib/xinput/XUngrDev.c ⟦86d692576⟧ TextFile
-r--r--r-- 0 11000 102 2469 1991-01-24T21:09:20 mit/extensions/lib/xinput/XUngrDvB.c ⟦8b285c5ab⟧ TextFile
-r--r--r-- 0 11000 102 2440 1991-01-24T21:09:47 mit/extensions/lib/xinput/XUngrDvK.c ⟦ff838faef⟧ TextFile

OctetView

0x000000…000200 TarEntry {name=»mit/«, mode=»775«, uid=»25370«, gid=»146«, size=»0«, mtime=»5057177255«, checksum=»4724«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x000200…000400 TarEntry {name=»mit/Imakefile«, mode=»444«, uid=»25370«, gid=»146«, size=»5546«, mtime=»5044333722«, checksum=»6615«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x000400…000f66 ⟦018fbc9c7⟧
0x000f66…001000 FilePadding[0x9a]
0x001000…001200 TarEntry {name=»mit/LABEL«, mode=»444«, uid=»25370«, gid=»146«, size=»4531«, mtime=»5045662010«, checksum=»5533«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x001200…001b59 ⟦f6b9e65f0⟧
0x001b59…001c00 FilePadding[0xa7]
0x001c00…001e00 TarEntry {name=»mit/Makefile«, mode=»444«, uid=»25370«, gid=»146«, size=»262«, mtime=»5042062006«, checksum=»6402«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x001e00…001eb2 ⟦d10487c9d⟧
0x001eb2…002000 FilePadding[0x14e]
0x002000…002200 TarEntry {name=»mit/Makefile.ini«, mode=»444«, uid=»25370«, gid=»146«, size=»3261«, mtime=»5042435232«, checksum=»7207«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x002200…0028b1 ⟦e081bb558⟧
0x0028b1…002a00 FilePadding[0x14f]
0x002a00…002c00 TarEntry {name=»mit/RELNOTES.PS«, mode=»444«, uid=»25370«, gid=»146«, size=»701205«, mtime=»5057177255«, checksum=»6551«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x002c00…03ae85 ⟦640150535⟧
0x03ae85…03b000 FilePadding[0x17b]
0x03b000…03b200 TarEntry {name=»mit/RELNOTES.TXT«, mode=»444«, uid=»25370«, gid=»146«, size=»251762«, mtime=»5057176627«, checksum=»6720«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x03b200…0505f2 ⟦f17ef2de4⟧
0x0505f2…050600 FilePadding[0xe]
0x050600…050800 TarEntry {name=»mit/RELNOTES.ms«, mode=»444«, uid=»25370«, gid=»146«, size=»237025«, mtime=»5057176627«, checksum=»6654«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x050800…064615 ⟦c9602cf3c⟧
0x064615…064800 FilePadding[0x1eb]
0x064800…064a00 TarEntry {name=»mit/bug-report«, mode=»444«, uid=»25370«, gid=»146«, size=»3731«, mtime=»5056560125«, checksum=»7011«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x064a00…0651d9 ⟦82edfb286⟧
0x0651d9…065200 FilePadding[0x27]
0x065200…065400 TarEntry {name=»mit/config/«, mode=»775«, uid=»25370«, gid=»146«, size=»0«, mtime=»5057176062«, checksum=»6164«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x065400…065600 TarEntry {name=»mit/config/att.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»1264«, mtime=»5045024723«, checksum=»7343«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x065600…0658b4 ⟦19b9c6bdb⟧
0x0658b4…065a00 FilePadding[0x14c]
0x065a00…065c00 TarEntry {name=»mit/config/ccimake.c«, mode=»444«, uid=»25370«, gid=»146«, size=»1057«, mtime=»4516376464«, checksum=»10017«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x065c00…065e2f ⟦cb265214b⟧
0x065e2f…066000 FilePadding[0x1d1]
0x066000…066200 TarEntry {name=»mit/config/sony.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»2715«, mtime=»5054536747«, checksum=»7563«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x066200…0667cd ⟦8df11aa47⟧
0x0667cd…066800 FilePadding[0x33]
0x066800…066a00 TarEntry {name=»mit/config/cray.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»1740«, mtime=»5040653034«, checksum=»7506«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x066a00…066de0 ⟦662a36c04⟧
0x066de0…066e00 FilePadding[0x20]
0x066e00…067000 TarEntry {name=»mit/config/noop.rules«, mode=»444«, uid=»25370«, gid=»146«, size=»0«, mtime=»4761522305«, checksum=»10176«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x067000…067200 TarEntry {name=»mit/config/Mips.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»4575«, mtime=»5045404361«, checksum=»7473«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x067200…067b7d ⟦b26693bd5⟧
0x067b7d…067c00 FilePadding[0x83]
0x067c00…067e00 TarEntry {name=»mit/config/Imake.tmpl«, mode=»444«, uid=»25370«, gid=»146«, size=»51704«, mtime=»5045333501«, checksum=»10206«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x067e00…06d1c4 ⟦2d83cdf50⟧
0x06d1c4…06d200 FilePadding[0x3c]
0x06d200…06d400 TarEntry {name=»mit/config/hp.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»2017«, mtime=»5044677756«, checksum=»7202«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x06d400…06d80f ⟦0d9ad4f52⟧
0x06d80f…06da00 FilePadding[0x1f1]
0x06da00…06dc00 TarEntry {name=»mit/config/imakemdep.h«, mode=»444«, uid=»25370«, gid=»146«, size=»16751«, mtime=»5056003617«, checksum=»10376«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x06dc00…06f9e9 ⟦b36f817f2⟧
0x06f9e9…06fa00 FilePadding[0x17]
0x06fa00…06fc00 TarEntry {name=»mit/config/luna.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»4217«, mtime=»5056216646«, checksum=»7524«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x06fc00…07048f ⟦e1fe59df3⟧
0x07048f…070600 FilePadding[0x171]
0x070600…070800 TarEntry {name=»mit/config/imake.man«, mode=»444«, uid=»25370«, gid=»146«, size=»16461«, mtime=»5045701656«, checksum=»10060«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x070800…072531 ⟦ef2bc91df⟧
0x072531…072600 FilePadding[0xcf]
0x072600…072800 TarEntry {name=»mit/config/apollo.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»1221«, mtime=»5056003617«, checksum=»10033«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x072800…072a91 ⟦106cc9da3⟧
0x072a91…072c00 FilePadding[0x16f]
0x072c00…072e00 TarEntry {name=»mit/config/Imakefile«, mode=»444«, uid=»25370«, gid=»146«, size=»1176«, mtime=»5043344601«, checksum=»10052«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x072e00…07307e ⟦2a9a09138⟧
0x07307e…073200 FilePadding[0x182]
0x073200…073400 TarEntry {name=»mit/config/generic.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»501«, mtime=»5034415765«, checksum=»10150«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x073400…073541 ⟦7b7dfa649⟧
0x073541…073600 FilePadding[0xbf]
0x073600…073800 TarEntry {name=»mit/config/README«, mode=»444«, uid=»25370«, gid=»146«, size=»27573«, mtime=»5045324030«, checksum=»7146«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x073800…07677b ⟦08b59f9be⟧
0x07677b…076800 FilePadding[0x85]
0x076800…076a00 TarEntry {name=»mit/config/Imake.rules«, mode=»444«, uid=»25370«, gid=»146«, size=»126706«, mtime=»5055023330«, checksum=»10406«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x076a00…0817c6 ⟦1fe50682d⟧
0x0817c6…081800 FilePadding[0x3a]
0x081800…081a00 TarEntry {name=»mit/config/pegasus.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»1427«, mtime=»5045303460«, checksum=»10221«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x081a00…081d17 ⟦69f61ecff⟧
0x081d17…081e00 FilePadding[0xe9]
0x081e00…082000 TarEntry {name=»mit/config/ibm.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»15027«, mtime=»5045367704«, checksum=»7355«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x082000…083a17 ⟦9b771adb7⟧
0x083a17…083c00 FilePadding[0x1e9]
0x083c00…083e00 TarEntry {name=»mit/config/sun.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»3040«, mtime=»5045303500«, checksum=»7343«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x083e00…084420 ⟦f7e24db50⟧
0x084420…084600 FilePadding[0x1e0]
0x084600…084800 TarEntry {name=»mit/config/Server.tmpl«, mode=»444«, uid=»25370«, gid=»146«, size=»1310«, mtime=»5011360047«, checksum=»10370«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x084800…084ac8 ⟦3342da455⟧
0x084ac8…084c00 FilePadding[0x138]
0x084c00…084e00 TarEntry {name=»mit/config/site.def«, mode=»444«, uid=»25370«, gid=»146«, size=»3722«, mtime=»5045734130«, checksum=»7666«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x084e00…0855d2 ⟦67fa994ab⟧
0x0855d2…085600 FilePadding[0x2e]
0x085600…085800 TarEntry {name=»mit/config/imake.c«, mode=»444«, uid=»25370«, gid=»146«, size=»45676«, mtime=»5043643720«, checksum=»7534«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x085800…08a3be ⟦76804337c⟧
0x08a3be…08a400 FilePadding[0x42]
0x08a400…08a600 TarEntry {name=»mit/config/moto.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»2646«, mtime=»5052523224«, checksum=»7534«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x08a600…08aba6 ⟦f1a253d22⟧
0x08aba6…08ac00 FilePadding[0x5a]
0x08ac00…08ae00 TarEntry {name=»mit/config/convex.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»5027«, mtime=»5045023374«, checksum=»10057«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x08ae00…08b817 ⟦8d294f596⟧
0x08b817…08ba00 FilePadding[0x1e9]
0x08ba00…08bc00 TarEntry {name=»mit/config/bsd.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»1557«, mtime=»5045307673«, checksum=»7340«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x08bc00…08bf6f ⟦797802a87⟧
0x08bf6f…08c000 FilePadding[0x91]
0x08c000…08c200 TarEntry {name=»mit/config/sgi.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»4761«, mtime=»5044677766«, checksum=»7366«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x08c200…08cbf1 ⟦3f71e25dc⟧
0x08cbf1…08cc00 FilePadding[0xf]
0x08cc00…08ce00 TarEntry {name=»mit/config/x386.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»10776«, mtime=»5054254740«, checksum=»7317«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x08ce00…08dffe ⟦f022ee61b⟧
0x08dffe…08e000 FilePadding[0x2]
0x08e000…08e200 TarEntry {name=»mit/config/rtcchack.bac«, mode=»444«, uid=»25370«, gid=»146«, size=»1064«, mtime=»4543015746«, checksum=»10477«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x08e200…08e434 ⟦d05e1dc09⟧
0x08e434…08e600 FilePadding[0x1cc]
0x08e600…08e800 TarEntry {name=»mit/config/ultrix.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»2267«, mtime=»5045310012«, checksum=»10073«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x08e800…08ecb7 ⟦fe1d05dd1⟧
0x08ecb7…08ee00 FilePadding[0x149]
0x08ee00…08f000 TarEntry {name=»mit/config/sunLib.tmpl«, mode=»444«, uid=»25370«, gid=»146«, size=»3540«, mtime=»5045554062«, checksum=»10376«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x08f000…08f760 ⟦f31f695fb⟧
0x08f760…08f800 FilePadding[0xa0]
0x08f800…08fa00 TarEntry {name=»mit/config/macII.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»1717«, mtime=»5045307744«, checksum=»7547«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x08fa00…08fdcf ⟦2ef6438b9⟧
0x08fdcf…08fe00 FilePadding[0x31]
0x08fe00…090000 TarEntry {name=»mit/config/oldlib.rules«, mode=»444«, uid=»25370«, gid=»146«, size=»5745«, mtime=»5000445417«, checksum=»10570«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x090000…090be5 ⟦65dfa4cbe⟧
0x090be5…090c00 FilePadding[0x1b]
0x090c00…090e00 TarEntry {name=»mit/config/Makefile.ini«, mode=»444«, uid=»25370«, gid=»146«, size=»2145«, mtime=»5002421135«, checksum=»10445«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x090e00…091265 ⟦c46e8118a⟧
0x091265…091400 FilePadding[0x19b]
0x091400…091600 TarEntry {name=»mit/config/sv4Lib.tmpl«, mode=»444«, uid=»25370«, gid=»146«, size=»4062«, mtime=»5041637735«, checksum=»10312«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x091600…091e32 ⟦003d44f47⟧
0x091e32…092000 FilePadding[0x1ce]
0x092000…092200 TarEntry {name=»mit/config/ibmLib.tmpl«, mode=»444«, uid=»25370«, gid=»146«, size=»2537«, mtime=»5010554012«, checksum=»10330«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x092200…09275f ⟦8bbc0ee0a⟧
0x09275f…092800 FilePadding[0xa1]
0x092800…092a00 TarEntry {name=»mit/config/sunLib.rules«, mode=»444«, uid=»25370«, gid=»146«, size=»4654«, mtime=»4773227215«, checksum=»10567«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x092a00…0933ac ⟦aae782ea4⟧
0x0933ac…093400 FilePadding[0x54]
0x093400…093600 TarEntry {name=»mit/config/sv4Lib.rules«, mode=»444«, uid=»25370«, gid=»146«, size=»4212«, mtime=»5041637771«, checksum=»10465«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x093600…093e8a ⟦154896e60⟧
0x093e8a…094000 FilePadding[0x176]
0x094000…094200 TarEntry {name=»mit/config/ibmLib.rules«, mode=»444«, uid=»25370«, gid=»146«, size=»4136«, mtime=»5012517752«, checksum=»10517«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x094200…094a5e ⟦0c5902bba⟧
0x094a5e…094c00 FilePadding[0x1a2]
0x094c00…094e00 TarEntry {name=»mit/config/DGUX.cf«, mode=»444«, uid=»25370«, gid=»146«, size=»1012«, mtime=»5012607167«, checksum=»7314«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x094e00…09500a ⟦bc5eb9cb8⟧
0x09500a…095200 FilePadding[0x1f6]
0x095200…095400 TarEntry {name=»mit/config/sgiLib.rules«, mode=»444«, uid=»25370«, gid=»146«, size=»3251«, mtime=»4773407260«, checksum=»10534«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x095400…095aa9 ⟦d7bc8e76a⟧
0x095aa9…095c00 FilePadding[0x157]
0x095c00…095e00 TarEntry {name=»mit/config/Library.tmpl«, mode=»444«, uid=»25370«, gid=»146«, size=»5741«, mtime=»5044324460«, checksum=»10547«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x095e00…0969e1 ⟦33dade2db⟧
0x0969e1…096a00 FilePadding[0x1f]
0x096a00…096c00 TarEntry {name=»mit/config/Project.tmpl«, mode=»444«, uid=»25370«, gid=»146«, size=»44712«, mtime=»5045423456«, checksum=»10600«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x096c00…09b5ca ⟦10ecd8dbc⟧
0x09b5ca…09b600 FilePadding[0x36]
0x09b600…09b800 TarEntry {name=»mit/extensions/«, mode=»775«, uid=»25370«, gid=»146«, size=»0«, mtime=»5057176063«, checksum=»7117«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x09b800…09ba00 TarEntry {name=»mit/extensions/include/«, mode=»775«, uid=»25370«, gid=»146«, size=»0«, mtime=»5043355044«, checksum=»10533«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x09ba00…09bc00 TarEntry {name=»mit/extensions/include/PEX/«, mode=»775«, uid=»25370«, gid=»146«, size=»0«, mtime=»5056260206«, checksum=»11166«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x09bc00…09be00 TarEntry {name=»mit/extensions/include/PEX/PEXmacs.h«, mode=»444«, uid=»25370«, gid=»146«, size=»2604«, mtime=»4757242743«, checksum=»12737«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x09be00…09c384 ⟦b82f47d46⟧
0x09c384…09c400 FilePadding[0x7c]
0x09c400…09c600 TarEntry {name=»mit/extensions/include/PEX/PEX.h«, mode=»444«, uid=»25370«, gid=»146«, size=»65200«, mtime=»5056260206«, checksum=»12077«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x09c600…0a3080 ⟦cb751db93⟧
0x0a3080…0a3200 FilePadding[0x180]
0x0a3200…0a3400 TarEntry {name=»mit/extensions/include/PEX/PEXproto.h«, mode=»444«, uid=»25370«, gid=»146«, size=»132012«, mtime=»5033707122«, checksum=»13175«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0a3400…0ae80a ⟦e643f1ea0⟧
0x0ae80a…0aea00 FilePadding[0x1f6]
0x0aea00…0aec00 TarEntry {name=»mit/extensions/include/PEX/Imakefile«, mode=»444«, uid=»25370«, gid=»146«, size=»2655«, mtime=»5037420307«, checksum=»13067«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0aec00…0af1ad ⟦ee8b158df⟧
0x0af1ad…0af200 FilePadding[0x53]
0x0af200…0af400 TarEntry {name=»mit/extensions/include/PEX/pexSwap.h«, mode=»444«, uid=»25370«, gid=»146«, size=»3544«, mtime=»5033707144«, checksum=»13057«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0af400…0afb64 ⟦ebff854f0⟧
0x0afb64…0afc00 FilePadding[0x9c]
0x0afc00…0afe00 TarEntry {name=»mit/extensions/include/PEX/PEXErr.h«, mode=»444«, uid=»25370«, gid=»146«, size=»2754«, mtime=»4757242751«, checksum=»12551«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0afe00…0b03ec ⟦4a1c07a61⟧
0x0b03ec…0b0400 FilePadding[0x14]
0x0b0400…0b0600 TarEntry {name=»mit/extensions/include/PEX/PEXOCs.h«, mode=»444«, uid=»25370«, gid=»146«, size=»12121«, mtime=»4757242754«, checksum=»12515«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0b0600…0b1a51 ⟦e77f9fbbb⟧
0x0b1a51…0b1c00 FilePadding[0x1af]
0x0b1c00…0b1e00 TarEntry {name=»mit/extensions/include/PEX/PEXfuncs.h«, mode=»444«, uid=»25370«, gid=»146«, size=»15740«, mtime=»4757242755«, checksum=»13162«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0b1e00…0b39e0 ⟦9129693d0⟧
0x0b39e0…0b3a00 FilePadding[0x20]
0x0b3a00…0b3c00 TarEntry {name=»mit/extensions/include/PEX/PEXprotost.h«, mode=»444«, uid=»25370«, gid=»146«, size=»31102«, mtime=»5033707103«, checksum=»13521«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0b3c00…0b6e42 ⟦231cd8adb⟧
0x0b6e42…0b7000 FilePadding[0x1be]
0x0b7000…0b7200 TarEntry {name=»mit/extensions/include/multibufst.h«, mode=»444«, uid=»25370«, gid=»146«, size=»20247«, mtime=»4741443020«, checksum=»13204«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0b7200…0b92a7 ⟦47f8cc268⟧
0x0b92a7…0b9400 FilePadding[0x159]
0x0b9400…0b9600 TarEntry {name=»mit/extensions/include/XIproto.h«, mode=»444«, uid=»25370«, gid=»146«, size=»102035«, mtime=»5043355040«, checksum=»12426«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0b9600…0c1a1d ⟦2a51dd423⟧
0x0c1a1d…0c1c00 FilePadding[0x1e3]
0x0c1c00…0c1e00 TarEntry {name=»mit/extensions/include/shape.h«, mode=»444«, uid=»25370«, gid=»146«, size=»11665«, mtime=»4757543341«, checksum=»12130«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0c1e00…0c31b5 ⟦531a0e4a4⟧
0x0c31b5…0c3200 FilePadding[0x4b]
0x0c3200…0c3400 TarEntry {name=»mit/extensions/include/Xext.h«, mode=»444«, uid=»25370«, gid=»146«, size=»3146«, mtime=»5037336252«, checksum=»11724«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0c3400…0c3a66 ⟦9cf2c9561⟧
0x0c3a66…0c3c00 FilePadding[0x19a]
0x0c3c00…0c3e00 TarEntry {name=»mit/extensions/include/Imakefile«, mode=»444«, uid=»25370«, gid=»146«, size=»1001«, mtime=»5040732300«, checksum=»12404«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0c3e00…0c4001 ⟦b6a6c43a9⟧
0x0c4001…0c4200 FilePadding[0x1ff]
0x0c4200…0c4400 TarEntry {name=»mit/extensions/include/xtestext1.h«, mode=»444«, uid=»25370«, gid=»146«, size=»23465«, mtime=»4330220013«, checksum=»12751«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0c4400…0c6b35 ⟦95281c5dc⟧
0x0c6b35…0c6c00 FilePadding[0xcb]
0x0c6c00…0c6e00 TarEntry {name=»mit/extensions/include/extutil.h«, mode=»444«, uid=»25370«, gid=»146«, size=»10424«, mtime=»4540335627«, checksum=»12512«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0c6e00…0c7f14 ⟦2d61bb584⟧
0x0c7f14…0c8000 FilePadding[0xec]
0x0c8000…0c8200 TarEntry {name=»mit/extensions/include/XI.h«, mode=»444«, uid=»25370«, gid=»146«, size=»15642«, mtime=»5043353004«, checksum=»11327«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0c8200…0c9da2 ⟦12e526bb4⟧
0x0c9da2…0c9e00 FilePadding[0x5e]
0x0c9e00…0ca000 TarEntry {name=»mit/extensions/include/XShm.h«, mode=»444«, uid=»25370«, gid=»146«, size=»7200«, mtime=»5037332311«, checksum=»11636«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0ca000…0cae80 ⟦64a947132⟧
0x0cae80…0cb000 FilePadding[0x180]
0x0cb000…0cb200 TarEntry {name=»mit/extensions/include/mitmiscstr.h«, mode=»444«, uid=»25370«, gid=»146«, size=»3311«, mtime=»4624103653«, checksum=»13162«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0cb200…0cb8c9 ⟦80aaf3d2c⟧
0x0cb8c9…0cba00 FilePadding[0x137]
0x0cba00…0cbc00 TarEntry {name=»mit/extensions/include/shapestr.h«, mode=»444«, uid=»25370«, gid=»146«, size=»15474«, mtime=»4633457755«, checksum=»12671«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0cbc00…0cd73c ⟦242710769⟧
0x0cd73c…0cd800 FilePadding[0xc4]
0x0cd800…0cda00 TarEntry {name=»mit/extensions/include/shmstr.h«, mode=»444«, uid=»25370«, gid=»146«, size=»10560«, mtime=»5037326162«, checksum=»12331«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0cda00…0ceb70 ⟦736a5ca92⟧
0x0ceb70…0cec00 FilePadding[0x90]
0x0cec00…0cee00 TarEntry {name=»mit/extensions/include/MITMisc.h«, mode=»444«, uid=»25370«, gid=»146«, size=»2774«, mtime=»5037333634«, checksum=»12250«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0cee00…0cf3fc ⟦123e43826⟧
0x0cf3fc…0cf400 FilePadding[0x4]
0x0cf400…0cf600 TarEntry {name=»mit/extensions/include/multibuf.h«, mode=»444«, uid=»25370«, gid=»146«, size=»16667«, mtime=»5037335344«, checksum=»12660«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0cf600…0d13b7 ⟦4daf71e19⟧
0x0d13b7…0d1400 FilePadding[0x49]
0x0d1400…0d1600 TarEntry {name=»mit/extensions/include/XInput.h«, mode=»444«, uid=»25370«, gid=»146«, size=»56632«, mtime=»5043353121«, checksum=»12242«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0d1600…0d739a ⟦c32190a75⟧
0x0d739a…0d7400 FilePadding[0x66]
0x0d7400…0d7600 TarEntry {name=»mit/extensions/lib/«, mode=»775«, uid=»25370«, gid=»146«, size=»0«, mtime=»5042715425«, checksum=»7660«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0d7600…0d7800 TarEntry {name=»mit/extensions/lib/xinput/«, mode=»775«, uid=»25370«, gid=»146«, size=»0«, mtime=»5043357600«, checksum=»11205«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0d7800…0d7a00 TarEntry {name=»mit/extensions/lib/xinput/Imakefile«, mode=»444«, uid=»25370«, gid=»146«, size=»4653«, mtime=»5043353600«, checksum=»13103«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0d7a00…0d83ab ⟦5ba9e4b56⟧
0x0d83ab…0d8400 FilePadding[0x55]
0x0d8400…0d8600 TarEntry {name=»mit/extensions/lib/xinput/XDevBell.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4251«, mtime=»5043054370«, checksum=»13077«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0d8600…0d8ea9 ⟦56b01108a⟧
0x0d8ea9…0d9000 FilePadding[0x157]
0x0d9000…0d9200 TarEntry {name=»mit/extensions/lib/xinput/XExtInt.c«, mode=»444«, uid=»25370«, gid=»146«, size=»44010«, mtime=»5043354321«, checksum=»13011«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0d9200…0dda08 ⟦4c7f03aba⟧
0x0dda08…0ddc00 FilePadding[0x1f8]
0x0ddc00…0dde00 TarEntry {name=»mit/extensions/lib/xinput/XChgFCtl.c«, mode=»444«, uid=»25370«, gid=»146«, size=»11740«, mtime=»4755076066«, checksum=»13074«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0dde00…0df1e0 ⟦26d52d1d6⟧
0x0df1e0…0df200 FilePadding[0x20]
0x0df200…0df400 TarEntry {name=»mit/extensions/lib/xinput/XChgKMap.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4651«, mtime=»4537337602«, checksum=»13051«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0df400…0dfda9 ⟦7c20441c5⟧
0x0dfda9…0dfe00 FilePadding[0x57]
0x0dfe00…0e0000 TarEntry {name=»mit/extensions/lib/xinput/XChgKbd.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4233«, mtime=»5043054272«, checksum=»12705«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0e0000…0e089b ⟦b17b18c98⟧
0x0e089b…0e0a00 FilePadding[0x165]
0x0e0a00…0e0c00 TarEntry {name=»mit/extensions/lib/xinput/XChgPnt.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4364«, mtime=»5043054322«, checksum=»12747«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0e0c00…0e14f4 ⟦fa031b4b0⟧
0x0e14f4…0e1600 FilePadding[0x10c]
0x0e1600…0e1800 TarEntry {name=»mit/extensions/lib/xinput/XChgProp.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4663«, mtime=»5043054346«, checksum=»13136«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0e1800…0e21b3 ⟦0059ac4d0⟧
0x0e21b3…0e2200 FilePadding[0x4d]
0x0e2200…0e2400 TarEntry {name=»mit/extensions/lib/xinput/XCloseDev.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4032«, mtime=»4541570756«, checksum=»13300«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0e2400…0e2c1a ⟦254ee7f1f⟧
0x0e2c1a…0e2e00 FilePadding[0x1e6]
0x0e2e00…0e3000 TarEntry {name=»mit/extensions/lib/xinput/XGMotion.c«, mode=»444«, uid=»25370«, gid=»146«, size=»6462«, mtime=»5043054426«, checksum=»13146«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0e3000…0e3d32 ⟦b8f21dafa⟧
0x0e3d32…0e3e00 FilePadding[0xce]
0x0e3e00…0e4000 TarEntry {name=»mit/extensions/lib/xinput/XGetFCtl.c«, mode=»444«, uid=»25370«, gid=»146«, size=»15341«, mtime=»4750345705«, checksum=»13105«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0e4000…0e5ae1 ⟦8460c0582⟧
0x0e5ae1…0e5c00 FilePadding[0x11f]
0x0e5c00…0e5e00 TarEntry {name=»mit/extensions/lib/xinput/XFreeLst.c«, mode=»444«, uid=»25370«, gid=»146«, size=»3327«, mtime=»4537337657«, checksum=»13154«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0e5e00…0e64d7 ⟦331d88231⟧
0x0e64d7…0e6600 FilePadding[0x129]
0x0e6600…0e6800 TarEntry {name=»mit/extensions/lib/xinput/XListDev.c«, mode=»444«, uid=»25370«, gid=»146«, size=»14053«, mtime=»5043054516«, checksum=»13157«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0e6800…0e802b ⟦aff87c31b⟧
0x0e802b…0e8200 FilePadding[0x1d5]
0x0e8200…0e8400 TarEntry {name=»mit/extensions/lib/xinput/XGetBMap.c«, mode=»444«, uid=»25370«, gid=»146«, size=»5321«, mtime=»4537337645«, checksum=»13060«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0e8400…0e8ed1 ⟦b69dbbb8f⟧
0x0e8ed1…0e9000 FilePadding[0x12f]
0x0e9000…0e9200 TarEntry {name=»mit/extensions/lib/xinput/XQueryDv.c«, mode=»444«, uid=»25370«, gid=»146«, size=»11560«, mtime=»4755076524«, checksum=»13220«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0e9200…0ea570 ⟦9e917272e⟧
0x0ea570…0ea600 FilePadding[0x90]
0x0ea600…0ea800 TarEntry {name=»mit/extensions/lib/xinput/XGetKMap.c«, mode=»444«, uid=»25370«, gid=»146«, size=»5265«, mtime=»4625011555«, checksum=»13063«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0ea800…0eb2b5 ⟦4e84a8979⟧
0x0eb2b5…0eb400 FilePadding[0x14b]
0x0eb400…0eb600 TarEntry {name=»mit/extensions/lib/xinput/XGetMMap.c«, mode=»444«, uid=»25370«, gid=»146«, size=»5230«, mtime=»4625011561«, checksum=»13052«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0eb600…0ec098 ⟦afbb5d6ec⟧
0x0ec098…0ec200 FilePadding[0x168]
0x0ec200…0ec400 TarEntry {name=»mit/extensions/lib/xinput/XGetProp.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4773«, mtime=»4625011564«, checksum=»13156«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0ec400…0ecdfb ⟦df83a9eea⟧
0x0ecdfb…0ece00 FilePadding[0x5]
0x0ece00…0ed000 TarEntry {name=»mit/extensions/lib/xinput/XGetVers.c«, mode=»444«, uid=»25370«, gid=»146«, size=»5110«, mtime=»4755076325«, checksum=»13151«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0ed000…0eda48 ⟦9b66574de⟧
0x0eda48…0edc00 FilePadding[0x1b8]
0x0edc00…0ede00 TarEntry {name=»mit/extensions/lib/xinput/XGrDvBut.c«, mode=»444«, uid=»25370«, gid=»146«, size=»6061«, mtime=»4747646116«, checksum=»13117«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0ede00…0eea31 ⟦37dd39f36⟧
0x0eea31…0eec00 FilePadding[0x1cf]
0x0eec00…0eee00 TarEntry {name=»mit/extensions/lib/xinput/XGrDvKey.c«, mode=»444«, uid=»25370«, gid=»146«, size=»6026«, mtime=»4747646160«, checksum=»13115«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0eee00…0efa16 ⟦dd66175ca⟧
0x0efa16…0efc00 FilePadding[0x1ea]
0x0efc00…0efe00 TarEntry {name=»mit/extensions/lib/xinput/XGrabDev.c«, mode=»444«, uid=»25370«, gid=»146«, size=»5515«, mtime=»5043054465«, checksum=»13105«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0efe00…0f094d ⟦56b16cd52⟧
0x0f094d…0f0a00 FilePadding[0xb3]
0x0f0a00…0f0c00 TarEntry {name=»mit/extensions/lib/xinput/XGtFocus.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4353«, mtime=»4537337772«, checksum=»13160«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0f0c00…0f14eb ⟦0c24049ea⟧
0x0f14eb…0f1600 FilePadding[0x115]
0x0f1600…0f1800 TarEntry {name=»mit/extensions/lib/xinput/XGtSelect.c«, mode=»444«, uid=»25370«, gid=»146«, size=»6041«, mtime=»5011065701«, checksum=»13266«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0f1800…0f2421 ⟦9bf179833⟧
0x0f2421…0f2600 FilePadding[0x1df]
0x0f2600…0f2800 TarEntry {name=»mit/extensions/lib/xinput/XSetMode.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4201«, mtime=»4761277124«, checksum=»13127«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0f2800…0f3081 ⟦9506b0176⟧
0x0f3081…0f3200 FilePadding[0x17f]
0x0f3200…0f3400 TarEntry {name=»mit/extensions/lib/xinput/XOpenDev.c«, mode=»444«, uid=»25370«, gid=»146«, size=»5056«, mtime=»5043054543«, checksum=»13130«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0f3400…0f3e2e ⟦ec6ff9538⟧
0x0f3e2e…0f4000 FilePadding[0x1d2]
0x0f4000…0f4200 TarEntry {name=»mit/extensions/lib/xinput/XSetDVal.c«, mode=»444«, uid=»25370«, gid=»146«, size=»5127«, mtime=»4761277222«, checksum=»13100«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0f4200…0f4c57 ⟦72fe40e87⟧
0x0f4c57…0f4e00 FilePadding[0x1a9]
0x0f4e00…0f5000 TarEntry {name=»mit/extensions/lib/xinput/XSelect.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4542«, mtime=»4537337775«, checksum=»13030«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0f5000…0f5962 ⟦4e4e6c1fb⟧
0x0f5962…0f5a00 FilePadding[0x9e]
0x0f5a00…0f5c00 TarEntry {name=»mit/extensions/lib/xinput/XSetBMap.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4750«, mtime=»4537337776«, checksum=»13106«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0f5c00…0f65e8 ⟦589440ad5⟧
0x0f65e8…0f6600 FilePadding[0x18]
0x0f6600…0f6800 TarEntry {name=»mit/extensions/lib/xinput/XSetMMap.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4673«, mtime=»4537340034«, checksum=»13102«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0f6800…0f71bb ⟦2bf31ecf9⟧
0x0f71bb…0f7200 FilePadding[0x45]
0x0f7200…0f7400 TarEntry {name=»mit/extensions/lib/xinput/XAllowDv.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4165«, mtime=»5043054241«, checksum=»13133«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0f7400…0f7c75 ⟦ed2123686⟧
0x0f7c75…0f7e00 FilePadding[0x18b]
0x0f7e00…0f8000 TarEntry {name=»mit/extensions/lib/xinput/XSndExEv.c«, mode=»444«, uid=»25370«, gid=»146«, size=»6054«, mtime=»4541573455«, checksum=»13115«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0f8000…0f8c2c ⟦2fb42e60e⟧
0x0f8c2c…0f8e00 FilePadding[0x1d4]
0x0f8e00…0f9000 TarEntry {name=»mit/extensions/lib/xinput/XStFocus.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4105«, mtime=»4537340036«, checksum=»13152«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0f9000…0f9845 ⟦df5e74ddd⟧
0x0f9845…0f9a00 FilePadding[0x1bb]
0x0f9a00…0f9c00 TarEntry {name=»mit/extensions/lib/xinput/XUngrDev.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4035«, mtime=»4537340037«, checksum=»13141«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0f9c00…0fa41d ⟦86d692576⟧
0x0fa41d…0fa600 FilePadding[0x1e3]
0x0fa600…0fa800 TarEntry {name=»mit/extensions/lib/xinput/XUngrDvB.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4645«, mtime=»4747646400«, checksum=»13113«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0fa800…0fb1a5 ⟦8b285c5ab⟧
0x0fb1a5…0fb200 FilePadding[0x5b]
0x0fb200…0fb400 TarEntry {name=»mit/extensions/lib/xinput/XUngrDvK.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4610«, mtime=»4747646433«, checksum=»13122«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0fb400…0fbd88 ⟦ff838faef⟧
0x0fbd88…0fbe00 FilePadding[0x78]
0x0fbe00…0fc000 TarEntry {name=»mit/extensions/lib/xinput/XGetDCtl.c«, mode=»444«, uid=»25370«, gid=»146«, size=»7666«, mtime=»5043354171«, checksum=»13067«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0fc000…0fcfb6 ⟦9f544725b⟧
0x0fcfb6…0fd000 FilePadding[0x4a]
0x0fd000…0fd200 TarEntry {name=»mit/extensions/lib/xinput/XChgDCtl.c«, mode=»444«, uid=»25370«, gid=»146«, size=»6263«, mtime=»5043357577«, checksum=»13056«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0fd200…0fdeb3 ⟦29945000f⟧
0x0fdeb3…0fe000 FilePadding[0x14d]
0x0fe000…0fe200 TarEntry {name=»mit/extensions/lib/xinput/XExtToWire.c«, mode=»444«, uid=»25370«, gid=»146«, size=»31655«, mtime=»5040712215«, checksum=»13500«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x0fe200…1015ad ⟦3fb8c2843⟧
0x1015ad…101600 FilePadding[0x53]
0x101600…101800 TarEntry {name=»mit/extensions/lib/PEX/«, mode=»775«, uid=»25370«, gid=»146«, size=»0«, mtime=»5042715710«, checksum=»10311«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x101800…101a00 TarEntry {name=»mit/extensions/lib/PEX/archive/«, mode=»775«, uid=»25370«, gid=»146«, size=»0«, mtime=»5042716652«, checksum=»11740«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x101a00…101c00 TarEntry {name=»mit/extensions/lib/PEX/archive/ar_ops.c«, mode=»444«, uid=»25370«, gid=»146«, size=»46467«, mtime=»5036604520«, checksum=»13502«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x101c00…106937 ⟦a448eae35⟧
0x106937…106a00 FilePadding[0xc9]
0x106a00…106c00 TarEntry {name=»mit/extensions/lib/PEX/archive/ar_conv.c«, mode=»444«, uid=»25370«, gid=»146«, size=»13402«, mtime=»5033707167«, checksum=»13635«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x106c00…108302 ⟦eb1de89ae⟧
0x108302…108400 FilePadding[0xfe]
0x108400…108600 TarEntry {name=»mit/extensions/lib/PEX/archive/ar_hier.c«, mode=»444«, uid=»25370«, gid=»146«, size=»25555«, mtime=»4776705111«, checksum=»13633«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x108600…10b16d ⟦911052825⟧
0x10b16d…10b200 FilePadding[0x93]
0x10b200…10b400 TarEntry {name=»mit/extensions/lib/PEX/archive/Imakefile«, mode=»444«, uid=»25370«, gid=»146«, size=»3607«, mtime=»5042716651«, checksum=»13637«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x10b400…10bb87 ⟦f03081dad⟧
0x10bb87…10bc00 FilePadding[0x79]
0x10bc00…10be00 TarEntry {name=»mit/extensions/lib/PEX/c_binding/«, mode=»775«, uid=»25370«, gid=»146«, size=»0«, mtime=»5055276233«, checksum=»12233«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x10be00…10c000 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_ar.c«, mode=»444«, uid=»25370«, gid=»146«, size=»46350«, mtime=»5037424175«, checksum=»13556«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x10c000…110ce8 ⟦2d5bba928⟧
0x110ce8…110e00 FilePadding[0x118]
0x110e00…111000 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_cell.c«, mode=»444«, uid=»25370«, gid=»146«, size=»11335«, mtime=»5003672315«, checksum=»14060«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x111000…1122dd ⟦aac8e035b⟧
0x1122dd…112400 FilePadding[0x123]
0x112400…112600 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_colr.c«, mode=»444«, uid=»25370«, gid=»146«, size=»6100«, mtime=»5003672316«, checksum=»14053«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x112600…113240 ⟦8583de180⟧
0x113240…113400 FilePadding[0x1c0]
0x113400…113600 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_util.c«, mode=»444«, uid=»25370«, gid=»146«, size=»20521«, mtime=»5037440373«, checksum=»14117«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x113600…115751 ⟦0dda729d0⟧
0x115751…115800 FilePadding[0xaf]
0x115800…115a00 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_dcue.c«, mode=»444«, uid=»25370«, gid=»146«, size=»11154«, mtime=»5003672317«, checksum=»14062«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x115a00…116c6c ⟦1e7b65947⟧
0x116c6c…116e00 FilePadding[0x194]
0x116e00…117000 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_erfn.c«, mode=»444«, uid=»25370«, gid=»146«, size=»2670«, mtime=»5003672320«, checksum=»14051«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x117000…1175b8 ⟦1186c2bb3⟧
0x1175b8…117600 FilePadding[0x48]
0x117600…117800 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_erhd.c«, mode=»444«, uid=»25370«, gid=»146«, size=»2650«, mtime=»5003672321«, checksum=»14040«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x117800…117da8 ⟦cf30e8157⟧
0x117da8…117e00 FilePadding[0x58]
0x117e00…118000 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_err.c«, mode=»444«, uid=»25370«, gid=»146«, size=»17040«, mtime=»5003672321«, checksum=»13725«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x118000…119e20 ⟦90780a5ed⟧
0x119e20…11a000 FilePadding[0x1e0]
0x11a000…11a200 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_esc.c«, mode=»444«, uid=»25370«, gid=»146«, size=»16767«, mtime=»5037427547«, checksum=»13745«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x11a200…11bff7 ⟦01bd907b7⟧
0x11bff7…11c000 FilePadding[0x9]
0x11c000…11c200 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_fill.c«, mode=»444«, uid=»25370«, gid=»146«, size=»65420«, mtime=»5037427612«, checksum=»14100«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x11c200…122d10 ⟦128a1bcbe⟧
0x122d10…122e00 FilePadding[0xf0]
0x122e00…123000 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_inp.c«, mode=»444«, uid=»25370«, gid=»146«, size=»250746«, mtime=»5040363655«, checksum=»13767«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x123000…1381e6 ⟦083e514a8⟧
0x1381e6…138200 FilePadding[0x1a]
0x138200…138400 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_lite.c«, mode=»444«, uid=»25370«, gid=»146«, size=»15462«, mtime=»5003672325«, checksum=»14104«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x138400…139f32 ⟦acabc53b1⟧
0x139f32…13a000 FilePadding[0xce]
0x13a000…13a200 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_mf.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4762«, mtime=»5003672326«, checksum=»13533«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x13a200…13abf2 ⟦dc9eff7c1⟧
0x13abf2…13ac00 FilePadding[0xe]
0x13ac00…13ae00 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_nset.c«, mode=»444«, uid=»25370«, gid=»146«, size=»4663«, mtime=»5003672327«, checksum=»14103«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x13ae00…13b7b3 ⟦5cb7b1abe⟧
0x13b7b3…13b800 FilePadding[0x4d]
0x13b800…13ba00 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_nurb.c«, mode=»444«, uid=»25370«, gid=»146«, size=»25442«, mtime=»5003672327«, checksum=»14116«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x13ba00…13e522 ⟦0cd758ca8⟧
0x13e522…13e600 FilePadding[0xde]
0x13e600…13e800 TarEntry {name=»mit/extensions/lib/PEX/c_binding/Imakefile«, mode=»444«, uid=»25370«, gid=»146«, size=»4651«, mtime=»5042716555«, checksum=»14135«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x13e800…13f1a9 ⟦a6d7444d9⟧
0x13f1a9…13f200 FilePadding[0x57]
0x13f200…13f400 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_plin.c«, mode=»444«, uid=»25370«, gid=»146«, size=»16072«, mtime=»5003672331«, checksum=»14104«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x13f400…14103a ⟦690663a76⟧
0x14103a…141200 FilePadding[0x1c6]
0x141200…141400 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_pmrk.c«, mode=»444«, uid=»25370«, gid=»146«, size=»13174«, mtime=»5003672332«, checksum=»14114«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x141400…142a7c ⟦cba9d45f6⟧
0x142a7c…142c00 FilePadding[0x184]
0x142c00…142e00 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_sedt.c«, mode=»444«, uid=»25370«, gid=»146«, size=»23010«, mtime=»5003672334«, checksum=»14072«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x142e00…145408 ⟦1a99d221d⟧
0x145408…145600 FilePadding[0x1f8]
0x145600…145800 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_text.c«, mode=»444«, uid=»25370«, gid=»146«, size=»33726«, mtime=»5003672337«, checksum=»14141«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x145800…148fd6 ⟦b89e871ce⟧
0x148fd6…149000 FilePadding[0x2a]
0x149000…149200 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_ctrl.c«, mode=»444«, uid=»25370«, gid=»146«, size=»22712«, mtime=»5037424225«, checksum=»14110«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x149200…14b7ca ⟦9ab18b7d9⟧
0x14b7ca…14b800 FilePadding[0x36]
0x14b800…14ba00 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_ws.c«, mode=»444«, uid=»25370«, gid=»146«, size=»263603«, mtime=»5037440444«, checksum=»13624«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x14ba00…162183 ⟦f35f2956d⟧
0x162183…162200 FilePadding[0x7d]
0x162200…162400 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_wst.c«, mode=»444«, uid=»25370«, gid=»146«, size=»300543«, mtime=»5055276235«, checksum=»14010«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x162400…17a563 ⟦d31b7b260⟧
0x17a563…17a600 FilePadding[0x9d]
0x17a600…17a800 TarEntry {name=»mit/extensions/lib/PEX/c_binding/cb_xfut.c«, mode=»444«, uid=»25370«, gid=»146«, size=»76377«, mtime=»5042663420«, checksum=»14150«, flag=»«, linkname=»«, magic=»«, version=»«, uname=»«, gname=»«, devmajor=»«, devminor=»«, prefix=»«}
0x17a800…2f5200 Dump {
0x17a800…2f5200   2f 2a 20 24 58 43 6f 6e 73 6f 72 74 69 75 6d 3a 20 63 62 5f 78 66 75 74 2e 63 2c 76 20 35 2e 34   ┆/* $XConsortium: cb_xfut.c,v 5.4┆
0x17a800…2f5200   20 39 31 2f 30 37 2f 32 32 20 31 39 3a 31 34 3a 35 32 20 68 65 72 73 68 20 45 78 70 20 24 20 2a   ┆ 91/07/22 19:14:52 hersh Exp $ *┆
0x17a800…2f5200   2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ┆/  /****************************┆
0x17a800…2f5200   2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a   ┆******************************* ┆
0x17a800…2f5200   43 6f 70 79 72 69 67 68 74 20 31 39 38 39 2c 20 31 39 39 30 2c 20 31 39 39 31 20 62 79 20 53 75   ┆Copyright 1989, 1990, 1991 by Su┆
0x17a800…2f5200   6e 20 4d 69 63 72 6f 73 79 73 74 65 6d 73 2c 20 49 6e 63 2e 20 61 6e 64 20 74 68 65 20 58 20 43   ┆n Microsystems, Inc. and the X C┆
0x17a800…2f5200   6f 6e 73 6f 72 74 69 75 6d 2e 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20   ┆onsortium.                      ┆
0x17a800…2f5200   20 20 20 20 41 6c 6c 20 52 69 67 68 74 73 20 52 65 73 65 72 76 65 64 0a 0a 50 65 72 6d 69 73 73   ┆    All Rights Reserved  Permiss┆
0x17a800…2f5200   69 6f 6e 20 74 6f 20 75 73 65 2c 20 63 6f 70 79 2c 20 6d 6f 64 69 66 79 2c 20 61 6e 64 20 64 69   ┆ion to use, copy, modify, and di┆
0x17a800…2f5200   73 74 72 69 62 75 74 65 20 74 68 69 73 20 73 6f 66 74 77 61 72 65 20 61 6e 64 20 69 74 73 20 0a   ┆stribute this software and its  ┆
0x17a800…2f5200   64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 6e 79 20 70 75 72 70 6f 73 65 20 61 6e   ┆documentation for any purpose an┆
0x17a800…2f5200   64 20 77 69 74 68 6f 75 74 20 66 65 65 20 69 73 20 68 65 72 65 62 79 20 67 72 61 6e 74 65 64 2c   ┆d without fee is hereby granted,┆
0x17a800…2f5200   20 0a 70 72 6f 76 69 64 65 64 20 74 68 61 74 20 74 68 65 20 61 62 6f 76 65 20 63 6f 70 79 72 69   ┆  provided that the above copyri┆
0x17a800…2f5200   67 68 74 20 6e 6f 74 69 63 65 20 61 70 70 65 61 72 20 69 6e 20 61 6c 6c 20 63 6f 70 69 65 73 20   ┆ght notice appear in all copies ┆
0x17a800…2f5200   61 6e 64 20 74 68 61 74 0a 62 6f 74 68 20 74 68 61 74 20 63 6f 70 79 72 69 67 68 74 20 6e 6f 74   ┆and that both that copyright not┆
0x17a800…2f5200   69 63 65 20 61 6e 64 20 74 68 69 73 20 70 65 72 6d 69 73 73 69 6f 6e 20 6e 6f 74 69 63 65 20 61   ┆ice and this permission notice a┆
0x17a800…2f5200   70 70 65 61 72 20 69 6e 20 0a 73 75 70 70 6f 72 74 69 6e 67 20 64 6f 63 75 6d 65 6e 74 61 74 69   ┆ppear in  supporting documentati┆
0x17a800…2f5200   6f 6e 2c 20 61 6e 64 20 74 68 61 74 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 53 75 6e 20 4d 69   ┆on, and that the names of Sun Mi┆
0x17a800…2f5200   63 72 6f 73 79 73 74 65 6d 73 2c 0a 74 68 65 20 58 20 43 6f 6e 73 6f 72 74 69 75 6d 2c 20 61 6e   ┆crosystems, the X Consortium, an┆
0x17a800…2f5200   64 20 4d 49 54 20 6e 6f 74 20 62 65 20 75 73 65 64 20 69 6e 20 61 64 76 65 72 74 69 73 69 6e 67   ┆d MIT not be used in advertising┆
0x17a800…2f5200   20 6f 72 20 70 75 62 6c 69 63 69 74 79 20 0a 70 65 72 74 61 69 6e 69 6e 67 20 74 6f 20 64 69 73   ┆ or publicity  pertaining to dis┆
0x17a800…2f5200   74 72 69 62 75 74 69 6f 6e 20 6f 66 20 74 68 65 20 73 6f 66 74 77 61 72 65 20 77 69 74 68 6f 75   ┆tribution of the software withou┆
0x17a800…2f5200   74 20 73 70 65 63 69 66 69 63 2c 20 77 72 69 74 74 65 6e 20 0a 70 72 69 6f 72 20 70 65 72 6d 69   ┆t specific, written  prior permi┆
0x17a800…2f5200   73 73 69 6f 6e 2e 20 20 0a 0a 53 55 4e 20 4d 49 43 52 4f 53 59 53 54 45 4d 53 20 44 49 53 43 4c   ┆ssion.    SUN MICROSYSTEMS DISCL┆
0x17a800…2f5200   41 49 4d 53 20 41 4c 4c 20 57 41 52 52 41 4e 54 49 45 53 20 57 49 54 48 20 52 45 47 41 52 44 20   ┆AIMS ALL WARRANTIES WITH REGARD ┆
0x17a800…2f5200   54 4f 20 54 48 49 53 20 53 4f 46 54 57 41 52 45 2c 20 0a 49 4e 43 4c 55 44 49 4e 47 20 41 4c 4c   ┆TO THIS SOFTWARE,  INCLUDING ALL┆
0x17a800…2f5200   20 49 4d 50 4c 49 45 44 20 57 41 52 52 41 4e 54 49 45 53 20 4f 46 20 4d 45 52 43 48 41 4e 54 41   ┆ IMPLIED WARRANTIES OF MERCHANTA┆
0x17a800…2f5200   42 49 4c 49 54 59 20 41 4e 44 20 46 49 54 4e 45 53 53 2c 20 49 4e 20 4e 4f 20 45 56 45 4e 54 20   ┆BILITY AND FITNESS, IN NO EVENT ┆
0x17a800…2f5200   0a 53 48 41 4c 4c 20 53 55 4e 20 4d 49 43 52 4f 53 59 53 54 45 4d 53 20 42 45 20 4c 49 41 42 4c   ┆ SHALL SUN MICROSYSTEMS BE LIABL┆
0x17a800…2f5200   45 20 46 4f 52 20 41 4e 59 20 53 50 45 43 49 41 4c 2c 20 49 4e 44 49 52 45 43 54 20 4f 52 20 43   ┆E FOR ANY SPECIAL, INDIRECT OR C┆
0x17a800…2f5200   4f 4e 53 45 51 55 45 4e 54 49 41 4c 20 0a 44 41 4d 41 47 45 53 20 4f 52 20 41 4e 59 20 44 41 4d   ┆ONSEQUENTIAL  DAMAGES OR ANY DAM┆
0x17a800…2f5200   41 47 45 53 20 57 48 41 54 53 4f 45 56 45 52 20 52 45 53 55 4c 54 49 4e 47 20 46 52 4f 4d 20 4c   ┆AGES WHATSOEVER RESULTING FROM L┆
0x17a800…2f5200   4f 53 53 20 4f 46 20 55 53 45 2c 20 44 41 54 41 20 4f 52 20 50 52 4f 46 49 54 53 2c 0a 57 48 45   ┆OSS OF USE, DATA OR PROFITS, WHE┆
0x17a800…2f5200   54 48 45 52 20 49 4e 20 41 4e 20 41 43 54 49 4f 4e 20 4f 46 20 43 4f 4e 54 52 41 43 54 2c 20 4e   ┆THER IN AN ACTION OF CONTRACT, N┆
0x17a800…2f5200   45 47 4c 49 47 45 4e 43 45 20 4f 52 20 4f 54 48 45 52 20 54 4f 52 54 49 4f 55 53 20 41 43 54 49   ┆EGLIGENCE OR OTHER TORTIOUS ACTI┆
0x17a800…2f5200   4f 4e 2c 0a 41 52 49 53 49 4e 47 20 4f 55 54 20 4f 46 20 4f 52 20 49 4e 20 43 4f 4e 4e 45 43 54   ┆ON, ARISING OUT OF OR IN CONNECT┆
0x17a800…2f5200   49 4f 4e 20 57 49 54 48 20 54 48 45 20 55 53 45 20 4f 52 20 50 45 52 46 4f 52 4d 41 4e 43 45 20   ┆ION WITH THE USE OR PERFORMANCE ┆
0x17a800…2f5200   4f 46 20 54 48 49 53 0a 53 4f 46 54 57 41 52 45 2e 0a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ┆OF THIS SOFTWARE.  *************┆
0x17a800…2f5200   2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ┆********************************┆
0x17a800…2f5200   2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 20 54 72 61 6e 73   ┆*********************/  /* Trans┆
0x17a800…2f5200   66 6f 72 6d 20 55 74 69 6c 69 74 79 20 66 75 6e 63 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 50   ┆form Utility functions for the P┆
0x17a800…2f5200   48 49 47 53 20 43 20 62 69 6e 64 69 6e 67 20 2a 2f 0a 0a 23 69 6e 63 6c 75 64 65 20 22 70 68 67   ┆HIGS C binding */  #include "phg┆
0x17a800…2f5200   2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 63 70 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 63 62   ┆.h" #include "cp.h" #include "cb┆
0x17a800…2f5200   5f 70 72 69 76 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 70 68 67 5f 64 74 2e 68 22 0a 0a 76 6f   ┆_priv.h" #include "phg_dt.h"  vo┆
0x17a800…2f5200   69 64 0a 70 74 72 61 6e 73 6c 61 74 65 33 28 20 74 72 61 6e 73 5f 76 65 63 74 6f 72 2c 20 65 72   ┆id ptranslate3( trans_vector, er┆
0x17a800…2f5200   72 6f 72 5f 69 6e 64 2c 20 6d 29 0a 20 20 20 20 50 76 65 63 33 09 09 2a 74 72 61 6e 73 5f 76 65   ┆ror_ind, m)     Pvec3  *trans_ve┆
0x17a800…2f5200   63 74 6f 72 3b 09 2f 2a 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 09 2a 2f 0a 20   ┆ctor; /* translation vector */  ┆
0x17a800…2f5200   20 20 20 50 69 6e 74 09 09 2a 65 72 72 6f 72 5f 69 6e 64 3b 09 2f 2a 20 4f 55 54 20 65 72 72 6f   ┆   Pint  *error_ind; /* OUT erro┆
0x17a800…2f5200   72 20 69 6e 64 69 63 61 74 6f 72 09 2a 2f 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 50 6d 61 74   ┆r indicator */     register Pmat┆
0x17a800…2f5200   72 69 78 33 09 6d 3b 09 09 2f 2a 20 4f 55 54 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6d   ┆rix3 m;  /* OUT transformation m┆
0x17a800…2f5200   61 74 72 69 78 09 2a 2f 0a 7b 0a 20 20 20 20 69 66 20 28 20 21 43 42 5f 45 4e 54 52 59 5f 43 48   ┆atrix */ {     if ( !CB_ENTRY_CH┆
0x17a800…2f5200   45 43 4b 28 20 70 68 67 5f 63 75 72 5f 63 70 68 2c 20 30 2c 20 50 66 6e 5f 49 4e 51 55 49 52 59   ┆ECK( phg_cur_cph, 0, Pfn_INQUIRY┆
0x17a800…2f5200   29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 32 3b 0a 20 20 20 20 20 0a 20   ┆)) {  *error_ind = ERR2;        ┆
0x17a800…2f5200   20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 30 3b 0a 09 6d 5b   ┆   } else {  *error_ind = 0;  m[┆
0x17a800…2f5200   30 5d 5b 33 5d 20 3d 20 74 72 61 6e 73 5f 76 65 63 74 6f 72 2d 3e 64 65 6c 74 61 5f 78 3b 0a 09   ┆0][3] = trans_vector->delta_x;  ┆
0x17a800…2f5200   6d 5b 31 5d 5b 33 5d 20 3d 20 74 72 61 6e 73 5f 76 65 63 74 6f 72 2d 3e 64 65 6c 74 61 5f 79 3b   ┆m[1][3] = trans_vector->delta_y;┆
0x17a800…2f5200   0a 09 6d 5b 32 5d 5b 33 5d 20 3d 20 74 72 61 6e 73 5f 76 65 63 74 6f 72 2d 3e 64 65 6c 74 61 5f   ┆  m[2][3] = trans_vector->delta_┆
0x17a800…2f5200   7a 3b 0a 09 6d 5b 30 5d 5b 30 5d 20 3d 20 6d 5b 31 5d 5b 31 5d 20 3d 20 6d 5b 32 5d 5b 32 5d 20   ┆z;  m[0][0] = m[1][1] = m[2][2] ┆
0x17a800…2f5200   3d 20 6d 5b 33 5d 5b 33 5d 20 3d 20 31 2e 30 3b 0a 09 6d 5b 30 5d 5b 31 5d 20 3d 20 6d 5b 30 5d   ┆= m[3][3] = 1.0;  m[0][1] = m[0]┆
0x17a800…2f5200   5b 32 5d 20 3d 20 6d 5b 31 5d 5b 30 5d 20 3d 20 6d 5b 31 5d 5b 32 5d 20 3d 20 6d 5b 32 5d 5b 30   ┆[2] = m[1][0] = m[1][2] = m[2][0┆
0x17a800…2f5200   5d 20 3d 20 6d 5b 32 5d 5b 31 5d 0a 09 20 20 20 20 3d 20 6d 5b 33 5d 5b 30 5d 20 3d 20 6d 5b 33   ┆] = m[2][1]      = m[3][0] = m[3┆
0x17a800…2f5200   5d 5b 31 5d 20 3d 20 6d 5b 33 5d 5b 32 5d 20 3d 20 30 2e 30 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 76   ┆][1] = m[3][2] = 0.0;     } }  v┆
0x17a800…2f5200   6f 69 64 0a 70 74 72 61 6e 73 6c 61 74 65 28 20 74 72 61 6e 73 5f 76 65 63 74 6f 72 2c 20 65 72   ┆oid ptranslate( trans_vector, er┆
0x17a800…2f5200   72 6f 72 5f 69 6e 64 2c 20 6d 29 0a 20 20 20 20 50 76 65 63 09 09 2a 74 72 61 6e 73 5f 76 65 63   ┆ror_ind, m)     Pvec  *trans_vec┆
0x17a800…2f5200   74 6f 72 3b 09 2f 2a 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 76 65 63 74 6f 72 09 2a 2f 0a 20 20   ┆tor; /* translation vector */   ┆
0x17a800…2f5200   20 20 50 69 6e 74 09 09 2a 65 72 72 6f 72 5f 69 6e 64 3b 09 2f 2a 20 4f 55 54 20 65 72 72 6f 72   ┆  Pint  *error_ind; /* OUT error┆
0x17a800…2f5200   20 69 6e 64 69 63 61 74 6f 72 09 2a 2f 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 50 6d 61 74 72   ┆ indicator */     register Pmatr┆
0x17a800…2f5200   69 78 09 6d 3b 09 09 2f 2a 20 4f 55 54 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6d 61 74   ┆ix m;  /* OUT transformation mat┆
0x17a800…2f5200   72 69 78 09 2a 2f 0a 7b 0a 20 20 20 20 69 66 20 28 20 21 43 42 5f 45 4e 54 52 59 5f 43 48 45 43   ┆rix */ {     if ( !CB_ENTRY_CHEC┆
0x17a800…2f5200   4b 28 20 70 68 67 5f 63 75 72 5f 63 70 68 2c 20 30 2c 20 50 66 6e 5f 49 4e 51 55 49 52 59 29 29   ┆K( phg_cur_cph, 0, Pfn_INQUIRY))┆
0x17a800…2f5200   20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 32 3b 0a 20 20 20 20 20 0a 20 20 20   ┆ {  *error_ind = ERR2;          ┆
0x17a800…2f5200   20 7d 20 65 6c 73 65 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 30 3b 0a 09 6d 5b 30 5d   ┆ } else {  *error_ind = 0;  m[0]┆
0x17a800…2f5200   5b 32 5d 20 3d 20 74 72 61 6e 73 5f 76 65 63 74 6f 72 2d 3e 64 65 6c 74 61 5f 78 3b 0a 09 6d 5b   ┆[2] = trans_vector->delta_x;  m[┆
0x17a800…2f5200   31 5d 5b 32 5d 20 3d 20 74 72 61 6e 73 5f 76 65 63 74 6f 72 2d 3e 64 65 6c 74 61 5f 79 3b 0a 09   ┆1][2] = trans_vector->delta_y;  ┆
0x17a800…2f5200   6d 5b 30 5d 5b 30 5d 20 3d 20 6d 5b 31 5d 5b 31 5d 20 3d 20 6d 5b 32 5d 5b 32 5d 20 3d 20 31 2e   ┆m[0][0] = m[1][1] = m[2][2] = 1.┆
0x17a800…2f5200   30 3b 0a 09 6d 5b 30 5d 5b 31 5d 20 3d 20 6d 5b 31 5d 5b 30 5d 20 3d 20 6d 5b 32 5d 5b 30 5d 20   ┆0;  m[0][1] = m[1][0] = m[2][0] ┆
0x17a800…2f5200   3d 20 6d 5b 32 5d 5b 31 5d 20 3d 20 30 2e 30 3b 0a 20 20 20 20 7d 0a 7d 0a 0c 0a 0a 76 6f 69 64   ┆= m[2][1] = 0.0;     } }    void┆
0x17a800…2f5200   0a 70 73 63 61 6c 65 33 28 20 73 63 61 6c 65 5f 76 65 63 74 6f 72 2c 20 65 72 72 6f 72 5f 69 6e   ┆ pscale3( scale_vector, error_in┆
0x17a800…2f5200   64 2c 20 6d 29 0a 20 20 20 20 50 76 65 63 33 09 09 2a 73 63 61 6c 65 5f 76 65 63 74 6f 72 3b 09   ┆d, m)     Pvec3  *scale_vector; ┆
0x17a800…2f5200   2f 2a 20 73 63 61 6c 65 20 66 61 63 74 6f 72 20 76 65 63 74 6f 72 09 2a 2f 0a 20 20 20 20 50 69   ┆/* scale factor vector */     Pi┆
0x17a800…2f5200   6e 74 09 09 2a 65 72 72 6f 72 5f 69 6e 64 3b 09 2f 2a 20 4f 55 54 20 65 72 72 6f 72 20 69 6e 64   ┆nt  *error_ind; /* OUT error ind┆
0x17a800…2f5200   69 63 61 74 6f 72 09 2a 2f 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 50 6d 61 74 72 69 78 33 09   ┆icator */     register Pmatrix3 ┆
0x17a800…2f5200   6d 3b 09 09 2f 2a 20 4f 55 54 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6d 61 74 72 69 78   ┆m;  /* OUT transformation matrix┆
0x17a800…2f5200   09 2a 2f 0a 7b 0a 20 20 20 20 69 66 20 28 20 21 43 42 5f 45 4e 54 52 59 5f 43 48 45 43 4b 28 20   ┆ */ {     if ( !CB_ENTRY_CHECK( ┆
0x17a800…2f5200   70 68 67 5f 63 75 72 5f 63 70 68 2c 20 30 2c 20 50 66 6e 5f 49 4e 51 55 49 52 59 29 29 20 7b 0a   ┆phg_cur_cph, 0, Pfn_INQUIRY)) { ┆
0x17a800…2f5200   09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 32 3b 0a 20 20 20 20 20 0a 20 20 20 20 7d 20   ┆ *error_ind = ERR2;           } ┆
0x17a800…2f5200   65 6c 73 65 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 30 3b 0a 09 6d 5b 30 5d 5b 30 5d   ┆else {  *error_ind = 0;  m[0][0]┆
0x17a800…2f5200   20 3d 20 73 63 61 6c 65 5f 76 65 63 74 6f 72 2d 3e 64 65 6c 74 61 5f 78 3b 0a 09 6d 5b 31 5d 5b   ┆ = scale_vector->delta_x;  m[1][┆
0x17a800…2f5200   31 5d 20 3d 20 73 63 61 6c 65 5f 76 65 63 74 6f 72 2d 3e 64 65 6c 74 61 5f 79 3b 0a 09 6d 5b 32   ┆1] = scale_vector->delta_y;  m[2┆
0x17a800…2f5200   5d 5b 32 5d 20 3d 20 73 63 61 6c 65 5f 76 65 63 74 6f 72 2d 3e 64 65 6c 74 61 5f 7a 3b 0a 09 6d   ┆][2] = scale_vector->delta_z;  m┆
0x17a800…2f5200   5b 33 5d 5b 33 5d 20 3d 20 31 2e 30 3b 0a 09 6d 5b 30 5d 5b 31 5d 20 3d 20 6d 5b 30 5d 5b 32 5d   ┆[3][3] = 1.0;  m[0][1] = m[0][2]┆
0x17a800…2f5200   20 3d 20 6d 5b 30 5d 5b 33 5d 0a 09 20 20 20 20 3d 20 6d 5b 31 5d 5b 30 5d 20 3d 20 6d 5b 31 5d   ┆ = m[0][3]      = m[1][0] = m[1]┆
0x17a800…2f5200   5b 32 5d 20 3d 20 6d 5b 31 5d 5b 33 5d 0a 09 20 20 20 20 3d 20 6d 5b 32 5d 5b 30 5d 20 3d 20 6d   ┆[2] = m[1][3]      = m[2][0] = m┆
0x17a800…2f5200   5b 32 5d 5b 31 5d 20 3d 20 6d 5b 32 5d 5b 33 5d 0a 09 20 20 20 20 3d 20 6d 5b 33 5d 5b 30 5d 20   ┆[2][1] = m[2][3]      = m[3][0] ┆
0x17a800…2f5200   3d 20 6d 5b 33 5d 5b 31 5d 20 3d 20 6d 5b 33 5d 5b 32 5d 20 3d 20 30 2e 30 3b 0a 20 20 20 20 7d   ┆= m[3][1] = m[3][2] = 0.0;     }┆
0x17a800…2f5200   0a 7d 0a 0a 76 6f 69 64 0a 70 73 63 61 6c 65 28 20 73 63 61 6c 65 5f 76 65 63 74 6f 72 2c 20 65   ┆ }  void pscale( scale_vector, e┆
0x17a800…2f5200   72 72 6f 72 5f 69 6e 64 2c 20 6d 29 0a 20 20 20 20 50 76 65 63 09 09 2a 73 63 61 6c 65 5f 76 65   ┆rror_ind, m)     Pvec  *scale_ve┆
0x17a800…2f5200   63 74 6f 72 3b 09 2f 2a 20 73 63 61 6c 65 20 66 61 63 74 6f 72 20 76 65 63 74 6f 72 09 2a 2f 0a   ┆ctor; /* scale factor vector */ ┆
0x17a800…2f5200   20 20 20 20 50 69 6e 74 09 09 2a 65 72 72 6f 72 5f 69 6e 64 3b 09 2f 2a 20 4f 55 54 20 65 72 72   ┆    Pint  *error_ind; /* OUT err┆
0x17a800…2f5200   6f 72 20 69 6e 64 69 63 61 74 6f 72 09 2a 2f 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 50 6d 61   ┆or indicator */     register Pma┆
0x17a800…2f5200   74 72 69 78 09 6d 3b 09 09 2f 2a 20 4f 55 54 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6d   ┆trix m;  /* OUT transformation m┆
0x17a800…2f5200   61 74 72 69 78 09 2a 2f 0a 7b 0a 20 20 20 20 69 66 20 28 20 21 43 42 5f 45 4e 54 52 59 5f 43 48   ┆atrix */ {     if ( !CB_ENTRY_CH┆
0x17a800…2f5200   45 43 4b 28 20 70 68 67 5f 63 75 72 5f 63 70 68 2c 20 30 2c 20 50 66 6e 5f 49 4e 51 55 49 52 59   ┆ECK( phg_cur_cph, 0, Pfn_INQUIRY┆
0x17a800…2f5200   29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 32 3b 0a 20 20 20 20 20 0a 20   ┆)) {  *error_ind = ERR2;        ┆
0x17a800…2f5200   20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 30 3b 0a 09 6d 5b   ┆   } else {  *error_ind = 0;  m[┆
0x17a800…2f5200   30 5d 5b 30 5d 20 3d 20 73 63 61 6c 65 5f 76 65 63 74 6f 72 2d 3e 64 65 6c 74 61 5f 78 3b 0a 09   ┆0][0] = scale_vector->delta_x;  ┆
0x17a800…2f5200   6d 5b 31 5d 5b 31 5d 20 3d 20 73 63 61 6c 65 5f 76 65 63 74 6f 72 2d 3e 64 65 6c 74 61 5f 79 3b   ┆m[1][1] = scale_vector->delta_y;┆
0x17a800…2f5200   0a 09 6d 5b 32 5d 5b 32 5d 20 3d 20 31 2e 30 3b 0a 09 6d 5b 30 5d 5b 31 5d 20 3d 20 6d 5b 30 5d   ┆  m[2][2] = 1.0;  m[0][1] = m[0]┆
0x17a800…2f5200   5b 32 5d 20 3d 20 6d 5b 31 5d 5b 30 5d 20 3d 20 6d 5b 31 5d 5b 32 5d 20 3d 20 6d 5b 32 5d 5b 30   ┆[2] = m[1][0] = m[1][2] = m[2][0┆
0x17a800…2f5200   5d 20 3d 20 6d 5b 32 5d 5b 31 5d 20 3d 20 30 2e 30 3b 0a 20 20 20 20 7d 0a 7d 0a 0c 0a 0a 76 6f   ┆] = m[2][1] = 0.0;     } }    vo┆
0x17a800…2f5200   69 64 0a 70 72 6f 74 61 74 65 5f 78 28 20 61 6e 67 6c 65 2c 20 65 72 72 6f 72 5f 69 6e 64 2c 20   ┆id protate_x( angle, error_ind, ┆
0x17a800…2f5200   6d 29 0a 20 20 20 20 50 66 6c 6f 61 74 09 09 61 6e 67 6c 65 3b 09 09 2f 2a 20 72 6f 74 61 74 69   ┆m)     Pfloat  angle;  /* rotati┆
0x17a800…2f5200   6f 6e 20 61 6e 67 6c 65 09 2a 2f 0a 20 20 20 20 50 69 6e 74 09 09 2a 65 72 72 6f 72 5f 69 6e 64   ┆on angle */     Pint  *error_ind┆
0x17a800…2f5200   3b 09 2f 2a 20 4f 55 54 20 65 72 72 6f 72 20 69 6e 64 69 63 61 74 6f 72 09 2a 2f 0a 20 20 20 20   ┆; /* OUT error indicator */     ┆
0x17a800…2f5200   72 65 67 69 73 74 65 72 20 50 6d 61 74 72 69 78 33 09 6d 3b 09 09 2f 2a 20 4f 55 54 20 74 72 61   ┆register Pmatrix3 m;  /* OUT tra┆
0x17a800…2f5200   6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6d 61 74 72 69 78 09 2a 2f 0a 7b 0a 20 20 20 20 69 66 20 28   ┆nsformation matrix */ {     if (┆
0x17a800…2f5200   20 21 43 42 5f 45 4e 54 52 59 5f 43 48 45 43 4b 28 20 70 68 67 5f 63 75 72 5f 63 70 68 2c 20 30   ┆ !CB_ENTRY_CHECK( phg_cur_cph, 0┆
0x17a800…2f5200   2c 20 50 66 6e 5f 49 4e 51 55 49 52 59 29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20   ┆, Pfn_INQUIRY)) {  *error_ind = ┆
0x17a800…2f5200   45 52 52 32 3b 0a 20 20 20 20 20 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 2a 65 72 72 6f 72   ┆ERR2;           } else {  *error┆
0x17a800…2f5200   5f 69 6e 64 20 3d 20 30 3b 0a 09 6d 5b 31 5d 5b 31 5d 20 3d 20 6d 5b 32 5d 5b 32 5d 20 3d 20 63   ┆_ind = 0;  m[1][1] = m[2][2] = c┆
0x17a800…2f5200   6f 73 28 61 6e 67 6c 65 29 3b 0a 09 6d 5b 31 5d 5b 32 5d 20 3d 20 2d 28 6d 5b 32 5d 5b 31 5d 20   ┆os(angle);  m[1][2] = -(m[2][1] ┆
0x17a800…2f5200   3d 20 73 69 6e 28 61 6e 67 6c 65 29 29 3b 0a 09 6d 5b 30 5d 5b 30 5d 20 3d 20 6d 5b 33 5d 5b 33   ┆= sin(angle));  m[0][0] = m[3][3┆
0x17a800…2f5200   5d 20 3d 20 31 2e 30 3b 0a 09 6d 5b 30 5d 5b 31 5d 20 3d 20 6d 5b 30 5d 5b 32 5d 20 3d 20 6d 5b   ┆] = 1.0;  m[0][1] = m[0][2] = m[┆
0x17a800…2f5200   30 5d 5b 33 5d 20 3d 20 6d 5b 31 5d 5b 30 5d 20 3d 20 6d 5b 31 5d 5b 33 5d 20 3d 20 6d 5b 32 5d   ┆0][3] = m[1][0] = m[1][3] = m[2]┆
0x17a800…2f5200   5b 30 5d 20 3d 20 6d 5b 32 5d 5b 33 5d 0a 09 20 20 20 20 3d 20 6d 5b 33 5d 5b 30 5d 20 3d 20 6d   ┆[0] = m[2][3]      = m[3][0] = m┆
0x17a800…2f5200   5b 33 5d 5b 31 5d 20 3d 20 6d 5b 33 5d 5b 32 5d 20 3d 20 30 2e 30 3b 0a 20 20 20 20 7d 0a 7d 0a   ┆[3][1] = m[3][2] = 0.0;     } } ┆
0x17a800…2f5200   0a 76 6f 69 64 0a 70 72 6f 74 61 74 65 5f 79 28 20 61 6e 67 6c 65 2c 20 65 72 72 6f 72 5f 69 6e   ┆ void protate_y( angle, error_in┆
0x17a800…2f5200   64 2c 20 6d 29 0a 20 20 20 20 50 66 6c 6f 61 74 09 09 61 6e 67 6c 65 3b 09 09 2f 2a 20 72 6f 74   ┆d, m)     Pfloat  angle;  /* rot┆
0x17a800…2f5200   61 74 69 6f 6e 20 61 6e 67 6c 65 09 2a 2f 0a 20 20 20 20 50 69 6e 74 09 09 2a 65 72 72 6f 72 5f   ┆ation angle */     Pint  *error_┆
0x17a800…2f5200   69 6e 64 3b 09 2f 2a 20 4f 55 54 20 65 72 72 6f 72 20 69 6e 64 69 63 61 74 6f 72 09 2a 2f 0a 20   ┆ind; /* OUT error indicator */  ┆
0x17a800…2f5200   20 20 20 72 65 67 69 73 74 65 72 20 50 6d 61 74 72 69 78 33 09 6d 3b 09 09 2f 2a 20 4f 55 54 20   ┆   register Pmatrix3 m;  /* OUT ┆
0x17a800…2f5200   74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6d 61 74 72 69 78 09 2a 2f 0a 7b 0a 20 20 20 20 69   ┆transformation matrix */ {     i┆
0x17a800…2f5200   66 20 28 20 21 43 42 5f 45 4e 54 52 59 5f 43 48 45 43 4b 28 20 70 68 67 5f 63 75 72 5f 63 70 68   ┆f ( !CB_ENTRY_CHECK( phg_cur_cph┆
0x17a800…2f5200   2c 20 30 2c 20 50 66 6e 5f 49 4e 51 55 49 52 59 29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64   ┆, 0, Pfn_INQUIRY)) {  *error_ind┆
0x17a800…2f5200   20 3d 20 45 52 52 32 3b 0a 20 20 20 20 20 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 2a 65 72   ┆ = ERR2;           } else {  *er┆
0x17a800…2f5200   72 6f 72 5f 69 6e 64 20 3d 20 30 3b 0a 09 6d 5b 30 5d 5b 30 5d 20 3d 20 6d 5b 32 5d 5b 32 5d 20   ┆ror_ind = 0;  m[0][0] = m[2][2] ┆
0x17a800…2f5200   3d 20 63 6f 73 28 61 6e 67 6c 65 29 3b 0a 09 6d 5b 32 5d 5b 30 5d 20 3d 20 2d 28 6d 5b 30 5d 5b   ┆= cos(angle);  m[2][0] = -(m[0][┆
0x17a800…2f5200   32 5d 20 3d 20 73 69 6e 28 61 6e 67 6c 65 29 29 3b 0a 09 6d 5b 31 5d 5b 31 5d 20 3d 20 6d 5b 33   ┆2] = sin(angle));  m[1][1] = m[3┆
0x17a800…2f5200   5d 5b 33 5d 20 3d 20 31 2e 30 3b 0a 09 6d 5b 30 5d 5b 31 5d 20 3d 20 6d 5b 30 5d 5b 33 5d 20 3d   ┆][3] = 1.0;  m[0][1] = m[0][3] =┆
0x17a800…2f5200   20 6d 5b 31 5d 5b 30 5d 20 3d 20 6d 5b 31 5d 5b 32 5d 20 3d 20 6d 5b 31 5d 5b 33 5d 20 3d 20 6d   ┆ m[1][0] = m[1][2] = m[1][3] = m┆
0x17a800…2f5200   5b 32 5d 5b 31 5d 20 3d 20 6d 5b 32 5d 5b 33 5d 0a 09 20 20 20 20 3d 20 6d 5b 33 5d 5b 30 5d 20   ┆[2][1] = m[2][3]      = m[3][0] ┆
0x17a800…2f5200   3d 20 6d 5b 33 5d 5b 31 5d 20 3d 20 6d 5b 33 5d 5b 32 5d 20 3d 20 30 2e 30 3b 0a 20 20 20 20 7d   ┆= m[3][1] = m[3][2] = 0.0;     }┆
0x17a800…2f5200   0a 7d 0a 0c 0a 0a 76 6f 69 64 0a 70 72 6f 74 61 74 65 5f 7a 28 20 61 6e 67 6c 65 2c 20 65 72 72   ┆ }    void protate_z( angle, err┆
0x17a800…2f5200   6f 72 5f 69 6e 64 2c 20 6d 29 0a 20 20 20 20 50 66 6c 6f 61 74 09 09 61 6e 67 6c 65 3b 09 09 2f   ┆or_ind, m)     Pfloat  angle;  /┆
0x17a800…2f5200   2a 20 72 6f 74 61 74 69 6f 6e 20 61 6e 67 6c 65 09 2a 2f 0a 20 20 20 20 50 69 6e 74 09 09 2a 65   ┆* rotation angle */     Pint  *e┆
0x17a800…2f5200   72 72 6f 72 5f 69 6e 64 3b 09 2f 2a 20 4f 55 54 20 65 72 72 6f 72 20 69 6e 64 69 63 61 74 6f 72   ┆rror_ind; /* OUT error indicator┆
0x17a800…2f5200   09 2a 2f 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 50 6d 61 74 72 69 78 33 09 6d 3b 09 09 2f 2a   ┆ */     register Pmatrix3 m;  /*┆
0x17a800…2f5200   20 4f 55 54 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6d 61 74 72 69 78 09 2a 2f 0a 7b 0a   ┆ OUT transformation matrix */ { ┆
0x17a800…2f5200   20 20 20 20 69 66 20 28 20 21 43 42 5f 45 4e 54 52 59 5f 43 48 45 43 4b 28 20 70 68 67 5f 63 75   ┆    if ( !CB_ENTRY_CHECK( phg_cu┆
0x17a800…2f5200   72 5f 63 70 68 2c 20 30 2c 20 50 66 6e 5f 49 4e 51 55 49 52 59 29 29 20 7b 0a 09 2a 65 72 72 6f   ┆r_cph, 0, Pfn_INQUIRY)) {  *erro┆
0x17a800…2f5200   72 5f 69 6e 64 20 3d 20 45 52 52 32 3b 0a 20 20 20 20 20 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b   ┆r_ind = ERR2;           } else {┆
0x17a800…2f5200   0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 30 3b 0a 09 6d 5b 30 5d 5b 30 5d 20 3d 20 6d 5b 31   ┆  *error_ind = 0;  m[0][0] = m[1┆
0x17a800…2f5200   5d 5b 31 5d 20 3d 20 63 6f 73 28 61 6e 67 6c 65 29 3b 0a 09 6d 5b 30 5d 5b 31 5d 20 3d 20 2d 28   ┆][1] = cos(angle);  m[0][1] = -(┆
0x17a800…2f5200   6d 5b 31 5d 5b 30 5d 20 3d 20 73 69 6e 28 61 6e 67 6c 65 29 29 3b 0a 09 6d 5b 32 5d 5b 32 5d 20   ┆m[1][0] = sin(angle));  m[2][2] ┆
0x17a800…2f5200   3d 20 6d 5b 33 5d 5b 33 5d 20 3d 20 31 2e 30 3b 0a 09 6d 5b 30 5d 5b 32 5d 20 3d 20 6d 5b 30 5d   ┆= m[3][3] = 1.0;  m[0][2] = m[0]┆
0x17a800…2f5200   5b 33 5d 20 3d 20 6d 5b 31 5d 5b 32 5d 20 3d 20 6d 5b 31 5d 5b 33 5d 20 3d 20 6d 5b 32 5d 5b 30   ┆[3] = m[1][2] = m[1][3] = m[2][0┆
0x17a800…2f5200   5d 20 3d 20 6d 5b 32 5d 5b 31 5d 20 3d 20 6d 5b 32 5d 5b 33 5d 0a 09 20 20 20 20 3d 20 6d 5b 33   ┆] = m[2][1] = m[2][3]      = m[3┆
0x17a800…2f5200   5d 5b 30 5d 20 3d 20 6d 5b 33 5d 5b 31 5d 20 3d 20 6d 5b 33 5d 5b 32 5d 20 3d 20 30 2e 30 3b 0a   ┆][0] = m[3][1] = m[3][2] = 0.0; ┆
0x17a800…2f5200   20 20 20 20 7d 0a 7d 0a 0a 76 6f 69 64 0a 70 72 6f 74 61 74 65 28 20 61 6e 67 6c 65 2c 20 65 72   ┆    } }  void protate( angle, er┆
0x17a800…2f5200   72 6f 72 5f 69 6e 64 2c 20 6d 29 0a 20 20 20 20 50 66 6c 6f 61 74 09 09 61 6e 67 6c 65 3b 09 09   ┆ror_ind, m)     Pfloat  angle;  ┆
0x17a800…2f5200   2f 2a 20 72 6f 74 61 74 69 6f 6e 20 61 6e 67 6c 65 09 2a 2f 0a 20 20 20 20 50 69 6e 74 09 09 2a   ┆/* rotation angle */     Pint  *┆
0x17a800…2f5200   65 72 72 6f 72 5f 69 6e 64 3b 09 2f 2a 20 4f 55 54 20 65 72 72 6f 72 20 69 6e 64 69 63 61 74 6f   ┆error_ind; /* OUT error indicato┆
0x17a800…2f5200   72 09 2a 2f 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 50 6d 61 74 72 69 78 09 6d 3b 09 09 2f 2a   ┆r */     register Pmatrix m;  /*┆
0x17a800…2f5200   20 4f 55 54 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6d 61 74 72 69 78 09 2a 2f 0a 7b 0a   ┆ OUT transformation matrix */ { ┆
0x17a800…2f5200   20 20 20 20 69 66 20 28 20 21 43 42 5f 45 4e 54 52 59 5f 43 48 45 43 4b 28 20 70 68 67 5f 63 75   ┆    if ( !CB_ENTRY_CHECK( phg_cu┆
0x17a800…2f5200   72 5f 63 70 68 2c 20 30 2c 20 50 66 6e 5f 49 4e 51 55 49 52 59 29 29 20 7b 0a 09 2a 65 72 72 6f   ┆r_cph, 0, Pfn_INQUIRY)) {  *erro┆
0x17a800…2f5200   72 5f 69 6e 64 20 3d 20 45 52 52 32 3b 0a 20 20 20 20 20 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b   ┆r_ind = ERR2;           } else {┆
0x17a800…2f5200   0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 30 3b 0a 09 6d 5b 30 5d 5b 30 5d 20 3d 20 6d 5b 31   ┆  *error_ind = 0;  m[0][0] = m[1┆
0x17a800…2f5200   5d 5b 31 5d 20 3d 20 63 6f 73 28 61 6e 67 6c 65 29 3b 0a 09 6d 5b 30 5d 5b 31 5d 20 3d 20 2d 28   ┆][1] = cos(angle);  m[0][1] = -(┆
0x17a800…2f5200   6d 5b 31 5d 5b 30 5d 20 3d 20 73 69 6e 28 61 6e 67 6c 65 29 29 3b 0a 09 6d 5b 32 5d 5b 32 5d 20   ┆m[1][0] = sin(angle));  m[2][2] ┆
0x17a800…2f5200   3d 20 31 2e 30 3b 0a 09 6d 5b 30 5d 5b 32 5d 20 3d 20 6d 5b 31 5d 5b 32 5d 20 3d 20 6d 5b 32 5d   ┆= 1.0;  m[0][2] = m[1][2] = m[2]┆
0x17a800…2f5200   5b 30 5d 20 3d 20 6d 5b 32 5d 5b 31 5d 20 3d 20 30 2e 30 3b 0a 20 20 20 20 7d 0a 7d 0a 0c 0a 0a   ┆[0] = m[2][1] = 0.0;     } }    ┆
0x17a800…2f5200   76 6f 69 64 0a 70 63 6f 6d 70 6f 73 65 5f 6d 61 74 72 69 78 33 28 20 61 2c 20 62 2c 20 65 72 72   ┆void pcompose_matrix3( a, b, err┆
0x17a800…2f5200   6f 72 5f 69 6e 64 2c 20 6d 29 0a 20 20 20 20 50 6d 61 74 72 69 78 33 09 61 3b 09 09 2f 2a 20 6d   ┆or_ind, m)     Pmatrix3 a;  /* m┆
0x17a800…2f5200   61 74 72 69 78 20 61 09 2a 2f 0a 20 20 20 20 50 6d 61 74 72 69 78 33 09 62 3b 09 09 2f 2a 20 6d   ┆atrix a */     Pmatrix3 b;  /* m┆
0x17a800…2f5200   61 74 72 69 78 20 62 09 2a 2f 0a 20 20 20 20 50 69 6e 74 09 2a 65 72 72 6f 72 5f 69 6e 64 3b 09   ┆atrix b */     Pint *error_ind; ┆
0x17a800…2f5200   2f 2a 20 4f 55 54 20 65 72 72 6f 72 20 69 6e 64 69 63 61 74 6f 72 09 2a 2f 0a 20 20 20 20 50 6d   ┆/* OUT error indicator */     Pm┆
0x17a800…2f5200   61 74 72 69 78 33 09 6d 3b 09 09 2f 2a 20 4f 55 54 20 72 65 73 75 6c 74 20 6d 61 74 72 69 78 09   ┆atrix3 m;  /* OUT result matrix ┆
0x17a800…2f5200   2a 2f 0a 7b 0a 20 20 20 20 69 66 20 28 20 21 43 42 5f 45 4e 54 52 59 5f 43 48 45 43 4b 28 20 70   ┆*/ {     if ( !CB_ENTRY_CHECK( p┆
0x17a800…2f5200   68 67 5f 63 75 72 5f 63 70 68 2c 20 30 2c 20 50 66 6e 5f 49 4e 51 55 49 52 59 29 29 20 7b 0a 09   ┆hg_cur_cph, 0, Pfn_INQUIRY)) {  ┆
0x17a800…2f5200   2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 32 3b 0a 20 20 20 20 20 0a 20 20 20 20 7d 20 65   ┆*error_ind = ERR2;           } e┆
0x17a800…2f5200   6c 73 65 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 30 3b 0a 09 70 68 67 5f 6d 61 74 5f   ┆lse {  *error_ind = 0;  phg_mat_┆
0x17a800…2f5200   6d 75 6c 28 6d 2c 20 61 2c 20 62 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0c 0a 0a 0a 76 6f 69 64 0a 70   ┆mul(m, a, b);     } }     void p┆
0x17a800…2f5200   63 6f 6d 70 6f 73 65 5f 6d 61 74 72 69 78 28 20 61 2c 20 62 2c 20 65 72 72 6f 72 5f 69 6e 64 2c   ┆compose_matrix( a, b, error_ind,┆
0x17a800…2f5200   20 6d 29 0a 20 20 20 20 50 6d 61 74 72 69 78 09 61 3b 09 09 2f 2a 20 6d 61 74 72 69 78 20 61 09   ┆ m)     Pmatrix a;  /* matrix a ┆
0x17a800…2f5200   2a 2f 0a 20 20 20 20 50 6d 61 74 72 69 78 09 62 3b 09 09 2f 2a 20 6d 61 74 72 69 78 20 62 09 2a   ┆*/     Pmatrix b;  /* matrix b *┆
0x17a800…2f5200   2f 0a 20 20 20 20 50 69 6e 74 09 2a 65 72 72 6f 72 5f 69 6e 64 3b 09 2f 2a 20 4f 55 54 20 65 72   ┆/     Pint *error_ind; /* OUT er┆
0x17a800…2f5200   72 6f 72 20 69 6e 64 69 63 61 74 6f 72 09 2a 2f 0a 20 20 20 20 50 6d 61 74 72 69 78 09 6d 3b 09   ┆ror indicator */     Pmatrix m; ┆
0x17a800…2f5200   09 2f 2a 20 4f 55 54 20 72 65 73 75 6c 74 20 6d 61 74 72 69 78 09 2a 2f 0a 7b 0a 20 20 20 20 69   ┆ /* OUT result matrix */ {     i┆
0x17a800…2f5200   66 20 28 20 21 43 42 5f 45 4e 54 52 59 5f 43 48 45 43 4b 28 20 70 68 67 5f 63 75 72 5f 63 70 68   ┆f ( !CB_ENTRY_CHECK( phg_cur_cph┆
0x17a800…2f5200   2c 20 30 2c 20 50 66 6e 5f 49 4e 51 55 49 52 59 29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64   ┆, 0, Pfn_INQUIRY)) {  *error_ind┆
0x17a800…2f5200   20 3d 20 45 52 52 32 3b 0a 20 20 20 20 20 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 2a 65 72   ┆ = ERR2;           } else {  *er┆
0x17a800…2f5200   72 6f 72 5f 69 6e 64 20 3d 20 30 3b 0a 09 70 68 67 5f 6d 61 74 5f 6d 75 6c 5f 33 78 33 28 6d 2c   ┆ror_ind = 0;  phg_mat_mul_3x3(m,┆
0x17a800…2f5200   20 61 2c 20 62 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0c 0a 0a 76 6f 69 64 0a 70 74 72 61 6e 5f 70 6f   ┆ a, b);     } }    void ptran_po┆
0x17a800…2f5200   69 6e 74 33 28 20 70 2c 20 6d 2c 20 65 72 72 6f 72 5f 69 6e 64 2c 20 72 29 0a 20 20 20 20 72 65   ┆int3( p, m, error_ind, r)     re┆
0x17a800…2f5200   67 69 73 74 65 72 20 50 70 6f 69 6e 74 33 09 2a 70 3b 09 09 2f 2a 20 70 6f 69 6e 74 09 2a 2f 0a   ┆gister Ppoint3 *p;  /* point */ ┆
0x17a800…2f5200   20 20 20 20 72 65 67 69 73 74 65 72 20 50 6d 61 74 72 69 78 33 09 6d 3b 09 09 2f 2a 20 74 72 61   ┆    register Pmatrix3 m;  /* tra┆
0x17a800…2f5200   6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6d 61 74 72 69 78 09 2a 2f 0a 20 20 20 20 50 69 6e 74 09 09   ┆nsformation matrix */     Pint  ┆
0x17a800…2f5200   2a 65 72 72 6f 72 5f 69 6e 64 3b 09 2f 2a 20 4f 55 54 20 65 72 72 6f 72 20 69 6e 64 69 63 61 74   ┆*error_ind; /* OUT error indicat┆
0x17a800…2f5200   6f 72 09 2a 2f 0a 20 20 20 20 50 70 6f 69 6e 74 33 09 09 2a 72 3b 09 09 2f 2a 20 4f 55 54 20 74   ┆or */     Ppoint3  *r;  /* OUT t┆
0x17a800…2f5200   72 61 6e 73 66 6f 72 6d 65 64 20 70 6f 69 6e 74 09 2a 2f 0a 7b 0a 20 20 20 20 2f 2a 20 54 4f 44   ┆ransformed point */ {     /* TOD┆
0x17a800…2f5200   4f 3a 20 6e 65 65 64 20 65 72 72 6f 72 20 63 6f 64 65 20 66 6f 72 20 77 20 3d 20 30 2e 20 2a 2f   ┆O: need error code for w = 0. */┆
0x17a800…2f5200   0a 20 20 20 20 72 65 67 69 73 74 65 72 20 66 6c 6f 61 74 09 77 3b 09 2f 2a 20 68 6f 6d 6f 67 65   ┆     register float w; /* homoge┆
0x17a800…2f5200   6e 65 6f 75 73 20 63 6f 6f 72 64 69 6e 61 74 65 20 2a 2f 0a 0a 20 20 20 20 69 66 20 28 20 21 43   ┆neous coordinate */      if ( !C┆
0x17a800…2f5200   42 5f 45 4e 54 52 59 5f 43 48 45 43 4b 28 20 70 68 67 5f 63 75 72 5f 63 70 68 2c 20 30 2c 20 50   ┆B_ENTRY_CHECK( phg_cur_cph, 0, P┆
0x17a800…2f5200   66 6e 5f 49 4e 51 55 49 52 59 29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52   ┆fn_INQUIRY)) {  *error_ind = ERR┆
0x17a800…2f5200   32 3b 0a 20 20 20 20 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 50 48 47 5f 4e 45 41 52 5f   ┆2;          } else if (PHG_NEAR_┆
0x17a800…2f5200   5a 45 52 4f 28 20 77 20 3d 20 6d 5b 33 5d 5b 30 5d 2a 70 2d 3e 78 20 2b 20 6d 5b 33 5d 5b 31 5d   ┆ZERO( w = m[3][0]*p->x + m[3][1]┆
0x17a800…2f5200   2a 70 2d 3e 79 0a 09 2b 20 6d 5b 33 5d 5b 32 5d 2a 70 2d 3e 7a 20 2b 20 6d 5b 33 5d 5b 33 5d 29   ┆*p->y  + m[3][2]*p->z + m[3][3])┆
0x17a800…2f5200   29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 2d 39 39 39 3b 0a 20 20 20 20 20 0a 20 20   ┆) {  *error_ind = -999;         ┆
0x17a800…2f5200   20 20 7d 20 65 6c 73 65 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 30 3b 0a 09 77 20 3d   ┆  } else {  *error_ind = 0;  w =┆
0x17a800…2f5200   20 31 2e 30 20 2f 20 77 3b 0a 09 72 2d 3e 78 20 3d 20 77 20 2a 20 28 6d 5b 30 5d 5b 30 5d 20 2a   ┆ 1.0 / w;  r->x = w * (m[0][0] *┆
0x17a800…2f5200   20 70 2d 3e 78 20 2b 20 6d 5b 30 5d 5b 31 5d 20 2a 20 70 2d 3e 79 20 2b 20 6d 5b 30 5d 5b 32 5d   ┆ p->x + m[0][1] * p->y + m[0][2]┆
0x17a800…2f5200   20 2a 20 70 2d 3e 7a 20 2b 20 6d 5b 30 5d 5b 33 5d 29 3b 0a 09 72 2d 3e 79 20 3d 20 77 20 2a 20   ┆ * p->z + m[0][3]);  r->y = w * ┆
0x17a800…2f5200   28 6d 5b 31 5d 5b 30 5d 20 2a 20 70 2d 3e 78 20 2b 20 6d 5b 31 5d 5b 31 5d 20 2a 20 70 2d 3e 79   ┆(m[1][0] * p->x + m[1][1] * p->y┆
0x17a800…2f5200   20 2b 20 6d 5b 31 5d 5b 32 5d 20 2a 20 70 2d 3e 7a 20 2b 20 6d 5b 31 5d 5b 33 5d 29 3b 0a 09 72   ┆ + m[1][2] * p->z + m[1][3]);  r┆
0x17a800…2f5200   2d 3e 7a 20 3d 20 77 20 2a 20 28 6d 5b 32 5d 5b 30 5d 20 2a 20 70 2d 3e 78 20 2b 20 6d 5b 32 5d   ┆->z = w * (m[2][0] * p->x + m[2]┆
0x17a800…2f5200   5b 31 5d 20 2a 20 70 2d 3e 79 20 2b 20 6d 5b 32 5d 5b 32 5d 20 2a 20 70 2d 3e 7a 20 2b 20 6d 5b   ┆[1] * p->y + m[2][2] * p->z + m[┆
0x17a800…2f5200   32 5d 5b 33 5d 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 76 6f 69 64 0a 70 74 72 61 6e 5f 70 6f 69 6e   ┆2][3]);     } }  void ptran_poin┆
0x17a800…2f5200   74 28 20 70 2c 20 6d 2c 20 65 72 72 6f 72 5f 69 6e 64 2c 20 72 29 0a 20 20 20 20 72 65 67 69 73   ┆t( p, m, error_ind, r)     regis┆
0x17a800…2f5200   74 65 72 20 50 70 6f 69 6e 74 09 2a 70 3b 09 09 2f 2a 20 70 6f 69 6e 74 09 2a 2f 0a 20 20 20 20   ┆ter Ppoint *p;  /* point */     ┆
0x17a800…2f5200   72 65 67 69 73 74 65 72 20 50 6d 61 74 72 69 78 09 6d 3b 09 09 2f 2a 20 74 72 61 6e 73 66 6f 72   ┆register Pmatrix m;  /* transfor┆
0x17a800…2f5200   6d 61 74 69 6f 6e 20 6d 61 74 72 69 78 09 2a 2f 0a 20 20 20 20 50 69 6e 74 09 09 2a 65 72 72 6f   ┆mation matrix */     Pint  *erro┆
0x17a800…2f5200   72 5f 69 6e 64 3b 09 2f 2a 20 4f 55 54 20 65 72 72 6f 72 20 69 6e 64 69 63 61 74 6f 72 09 2a 2f   ┆r_ind; /* OUT error indicator */┆
0x17a800…2f5200   0a 20 20 20 20 50 70 6f 69 6e 74 09 09 2a 72 3b 09 09 2f 2a 20 4f 55 54 20 74 72 61 6e 73 66 6f   ┆     Ppoint  *r;  /* OUT transfo┆
0x17a800…2f5200   72 6d 65 64 20 70 6f 69 6e 74 09 2a 2f 0a 7b 0a 20 20 20 20 2f 2a 20 54 4f 44 4f 3a 20 6e 65 65   ┆rmed point */ {     /* TODO: nee┆
0x17a800…2f5200   64 20 65 72 72 6f 72 20 63 6f 64 65 20 66 6f 72 20 77 20 3d 20 30 2e 20 2a 2f 0a 20 20 20 20 72   ┆d error code for w = 0. */     r┆
0x17a800…2f5200   65 67 69 73 74 65 72 20 66 6c 6f 61 74 09 77 3b 09 2f 2a 20 68 6f 6d 6f 67 65 6e 6f 75 73 20 63   ┆egister float w; /* homogenous c┆
0x17a800…2f5200   6f 6f 72 64 69 6e 61 74 65 20 2a 2f 0a 0a 20 20 20 20 69 66 20 28 20 21 43 42 5f 45 4e 54 52 59   ┆oordinate */      if ( !CB_ENTRY┆
0x17a800…2f5200   5f 43 48 45 43 4b 28 20 70 68 67 5f 63 75 72 5f 63 70 68 2c 20 30 2c 20 50 66 6e 5f 49 4e 51 55   ┆_CHECK( phg_cur_cph, 0, Pfn_INQU┆
0x17a800…2f5200   49 52 59 29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 32 3b 0a 0a 20 20 20   ┆IRY)) {  *error_ind = ERR2;     ┆
0x17a800…2f5200   20 7d 20 65 6c 73 65 20 69 66 20 28 50 48 47 5f 4e 45 41 52 5f 5a 45 52 4f 28 20 77 20 3d 20 6d   ┆ } else if (PHG_NEAR_ZERO( w = m┆
0x17a800…2f5200   5b 32 5d 5b 30 5d 20 2a 20 70 2d 3e 78 20 2b 20 6d 5b 32 5d 5b 31 5d 20 2a 20 70 2d 3e 79 20 2b   ┆[2][0] * p->x + m[2][1] * p->y +┆
0x17a800…2f5200   20 6d 5b 32 5d 5b 32 5d 29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 2d 39 39 39 3b   ┆ m[2][2])) {  *error_ind = -999;┆
0x17a800…2f5200   0a 20 20 20 20 20 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20   ┆           } else {  *error_ind ┆
0x17a800…2f5200   3d 20 30 3b 0a 09 77 20 3d 20 31 2e 30 20 2f 20 77 3b 0a 09 72 2d 3e 78 20 3d 20 77 20 2a 20 28   ┆= 0;  w = 1.0 / w;  r->x = w * (┆
0x17a800…2f5200   6d 5b 30 5d 5b 30 5d 20 2a 20 70 2d 3e 78 20 2b 20 6d 5b 30 5d 5b 31 5d 20 2a 20 70 2d 3e 79 20   ┆m[0][0] * p->x + m[0][1] * p->y ┆
0x17a800…2f5200   2b 20 6d 5b 30 5d 5b 32 5d 29 3b 0a 09 72 2d 3e 79 20 3d 20 77 20 2a 20 28 6d 5b 31 5d 5b 30 5d   ┆+ m[0][2]);  r->y = w * (m[1][0]┆
0x17a800…2f5200   20 2a 20 70 2d 3e 78 20 2b 20 6d 5b 31 5d 5b 31 5d 20 2a 20 70 2d 3e 79 20 2b 20 6d 5b 31 5d 5b   ┆ * p->x + m[1][1] * p->y + m[1][┆
0x17a800…2f5200   32 5d 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0c 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 0a 62 75 69 6c   ┆2]);     } }    static void buil┆
0x17a800…2f5200   64 5f 74 72 61 6e 73 66 6f 72 6d 33 28 20 70 74 2c 20 73 68 69 66 74 2c 20 61 78 2c 20 61 79 2c   ┆d_transform3( pt, shift, ax, ay,┆
0x17a800…2f5200   20 61 7a 2c 20 73 63 6c 2c 20 6d 29 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 50 70 6f 69 6e 74   ┆ az, scl, m)     register Ppoint┆
0x17a800…2f5200   33 09 2a 70 74 3b 09 09 2f 2a 20 66 69 78 65 64 20 70 6f 69 6e 74 09 2a 2f 0a 20 20 20 20 50 76   ┆3 *pt;  /* fixed point */     Pv┆
0x17a800…2f5200   65 63 33 09 09 2a 73 68 69 66 74 3b 09 09 2f 2a 20 73 68 69 66 74 20 76 65 63 74 6f 72 09 2a 2f   ┆ec3  *shift;  /* shift vector */┆
0x17a800…2f5200   0a 20 20 20 20 50 66 6c 6f 61 74 09 09 61 78 3b 09 09 2f 2a 20 72 6f 74 61 74 69 6f 6e 20 61 6e   ┆     Pfloat  ax;  /* rotation an┆
0x17a800…2f5200   67 6c 65 20 58 09 2a 2f 0a 20 20 20 20 50 66 6c 6f 61 74 09 09 61 79 3b 09 09 2f 2a 20 72 6f 74   ┆gle X */     Pfloat  ay;  /* rot┆
0x17a800…2f5200   61 74 69 6f 6e 20 61 6e 67 6c 65 20 59 09 2a 2f 0a 20 20 20 20 50 66 6c 6f 61 74 09 09 61 7a 3b   ┆ation angle Y */     Pfloat  az;┆
0x17a800…2f5200   09 09 2f 2a 20 72 6f 74 61 74 69 6f 6e 20 61 6e 67 6c 65 20 5a 09 2a 2f 0a 20 20 20 20 72 65 67   ┆  /* rotation angle Z */     reg┆
0x17a800…2f5200   69 73 74 65 72 20 50 76 65 63 33 09 2a 73 63 6c 3b 09 09 2f 2a 20 73 63 61 6c 65 20 76 65 63 74   ┆ister Pvec3 *scl;  /* scale vect┆
0x17a800…2f5200   6f 72 09 2a 2f 0a 20 20 20 20 50 6d 61 74 72 69 78 33 09 09 6d 3b 09 09 2f 2a 20 4f 55 54 20 74   ┆or */     Pmatrix3  m;  /* OUT t┆
0x17a800…2f5200   72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6d 61 74 72 69 78 09 2a 2f 0a 7b 0a 20 20 20 20 2f 2a   ┆ransformation matrix */ {     /*┆
0x17a800…2f5200   20 54 72 61 6e 73 6c 61 74 65 20 70 74 20 74 6f 20 74 68 65 20 6f 72 69 67 69 6e 2c 20 73 63 61   ┆ Translate pt to the origin, sca┆
0x17a800…2f5200   6c 65 2c 20 72 6f 74 61 74 65 2c 20 74 72 61 6e 73 6c 61 74 65 20 62 61 63 6b 20 74 6f 20 70 74   ┆le, rotate, translate back to pt┆
0x17a800…2f5200   2c 0a 20 20 20 20 20 2a 20 73 68 69 66 74 3a 0a 20 20 20 20 20 2a 09 09 09 54 20 2a 20 54 66 7e   ┆,      * shift:      *   T * Tf~┆
0x17a800…2f5200   20 2a 20 52 7a 20 2a 20 52 79 20 2a 20 52 78 20 2a 20 53 20 2a 20 54 66 2e 0a 20 20 20 20 20 2a   ┆ * Rz * Ry * Rx * S * Tf.      *┆
0x17a800…2f5200   0a 20 20 20 20 20 2a 20 20 20 20 77 68 65 72 65 3a 09 54 20 69 73 20 74 68 65 20 22 73 68 69 66   ┆      *    where: T is the "shif┆
0x17a800…2f5200   74 22 20 74 72 61 6e 73 66 6f 72 6d 2c 0a 20 20 20 20 20 2a 09 09 09 54 66 20 69 61 20 74 68 65   ┆t" transform,      *   Tf ia the┆
0x17a800…2f5200   20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 6f 66 20 70 74 20 74 6f 20 74 68 65 20 6f 72 69 67 69 6e   ┆ translation of pt to the origin┆
0x17a800…2f5200   20 61 6e 64 0a 20 20 20 20 20 2a 09 09 09 54 66 7e 20 69 73 20 69 74 27 73 20 69 6e 76 65 72 73   ┆ and      *   Tf~ is it's invers┆
0x17a800…2f5200   65 2c 0a 20 20 20 20 20 2a 09 09 09 52 69 20 69 73 20 74 68 65 20 72 6f 74 61 74 69 6f 6e 20 74   ┆e,      *   Ri is the rotation t┆
0x17a800…2f5200   72 61 6e 73 66 6f 72 6d 20 61 62 6f 75 74 20 74 68 65 20 69 27 74 68 20 61 78 69 73 2c 0a 20 20   ┆ransform about the i'th axis,   ┆
0x17a800…2f5200   20 20 20 2a 09 09 09 53 20 69 73 20 74 68 65 20 73 63 61 6c 69 6e 67 20 74 72 61 6e 73 66 6f 72   ┆   *   S is the scaling transfor┆
0x17a800…2f5200   6d 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 66 6c 6f 61 74 09 2a 72   ┆m.      */     register float *r┆
0x17a800…2f5200   3b 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 66 6c 6f 61 74 09 63 7a 2c 20 73 7a 2c 20 63 78 2c   ┆;     register float cz, sz, cx,┆
0x17a800…2f5200   20 73 78 2c 20 63 79 2c 20 73 79 3b 0a 0a 20 20 20 20 63 78 20 3d 20 63 6f 73 28 61 78 29 3b 20   ┆ sx, cy, sy;      cx = cos(ax); ┆
0x17a800…2f5200   73 78 20 3d 20 73 69 6e 28 61 78 29 3b 0a 20 20 20 20 63 79 20 3d 20 63 6f 73 28 61 79 29 3b 20   ┆sx = sin(ax);     cy = cos(ay); ┆
0x17a800…2f5200   73 79 20 3d 20 73 69 6e 28 61 79 29 3b 0a 20 20 20 20 63 7a 20 3d 20 63 6f 73 28 61 7a 29 3b 20   ┆sy = sin(ay);     cz = cos(az); ┆
0x17a800…2f5200   73 7a 20 3d 20 73 69 6e 28 61 7a 29 3b 0a 0a 20 20 20 20 72 20 3d 20 6d 5b 30 5d 3b 0a 20 20 20   ┆sz = sin(az);      r = m[0];    ┆
0x17a800…2f5200   20 72 5b 30 5d 20 3d 20 63 7a 20 2a 20 63 79 20 2a 20 73 63 6c 2d 3e 64 65 6c 74 61 5f 78 3b 0a   ┆ r[0] = cz * cy * scl->delta_x; ┆
0x17a800…2f5200   20 20 20 20 72 5b 31 5d 20 3d 20 28 63 7a 20 2a 20 73 78 20 2a 20 73 79 20 2d 20 73 7a 20 2a 20   ┆    r[1] = (cz * sx * sy - sz * ┆
0x17a800…2f5200   63 78 29 20 2a 20 73 63 6c 2d 3e 64 65 6c 74 61 5f 79 3b 0a 20 20 20 20 72 5b 32 5d 20 3d 20 28   ┆cx) * scl->delta_y;     r[2] = (┆
0x17a800…2f5200   63 7a 20 2a 20 73 79 20 2a 20 63 78 20 2b 20 73 7a 20 2a 20 73 78 29 20 2a 20 73 63 6c 2d 3e 64   ┆cz * sy * cx + sz * sx) * scl->d┆
0x17a800…2f5200   65 6c 74 61 5f 7a 3b 0a 20 20 20 20 72 5b 33 5d 20 3d 20 73 68 69 66 74 2d 3e 64 65 6c 74 61 5f   ┆elta_z;     r[3] = shift->delta_┆
0x17a800…2f5200   78 20 2b 20 70 74 2d 3e 78 20 2d 20 28 72 5b 30 5d 20 2a 20 70 74 2d 3e 78 20 2b 20 72 5b 31 5d   ┆x + pt->x - (r[0] * pt->x + r[1]┆
0x17a800…2f5200   20 2a 20 70 74 2d 3e 79 20 2b 20 72 5b 32 5d 20 2a 20 70 74 2d 3e 7a 29 3b 0a 20 20 20 20 72 20   ┆ * pt->y + r[2] * pt->z);     r ┆
0x17a800…2f5200   3d 20 6d 5b 31 5d 3b 0a 20 20 20 20 72 5b 30 5d 20 3d 20 73 7a 20 2a 20 63 79 20 2a 20 73 63 6c   ┆= m[1];     r[0] = sz * cy * scl┆
0x17a800…2f5200   2d 3e 64 65 6c 74 61 5f 78 3b 0a 20 20 20 20 72 5b 31 5d 20 3d 20 28 73 7a 20 2a 20 73 78 20 2a   ┆->delta_x;     r[1] = (sz * sx *┆
0x17a800…2f5200   20 73 79 20 2b 20 63 7a 20 2a 20 63 78 29 20 2a 20 73 63 6c 2d 3e 64 65 6c 74 61 5f 79 3b 0a 20   ┆ sy + cz * cx) * scl->delta_y;  ┆
0x17a800…2f5200   20 20 20 72 5b 32 5d 20 3d 20 28 73 7a 20 2a 20 73 79 20 2a 20 63 78 20 2d 20 63 7a 20 2a 20 73   ┆   r[2] = (sz * sy * cx - cz * s┆
0x17a800…2f5200   78 29 20 2a 20 73 63 6c 2d 3e 64 65 6c 74 61 5f 7a 3b 0a 20 20 20 20 72 5b 33 5d 20 3d 20 73 68   ┆x) * scl->delta_z;     r[3] = sh┆
0x17a800…2f5200   69 66 74 2d 3e 64 65 6c 74 61 5f 79 20 2b 20 70 74 2d 3e 79 20 2d 20 28 72 5b 30 5d 20 2a 20 70   ┆ift->delta_y + pt->y - (r[0] * p┆
0x17a800…2f5200   74 2d 3e 78 20 2b 20 72 5b 31 5d 20 2a 20 70 74 2d 3e 79 20 2b 20 72 5b 32 5d 20 2a 20 70 74 2d   ┆t->x + r[1] * pt->y + r[2] * pt-┆
0x17a800…2f5200   3e 7a 29 3b 0a 20 20 20 20 72 20 3d 20 6d 5b 32 5d 3b 0a 20 20 20 20 72 5b 30 5d 20 3d 20 2d 73   ┆>z);     r = m[2];     r[0] = -s┆
0x17a800…2f5200   79 20 2a 20 73 63 6c 2d 3e 64 65 6c 74 61 5f 78 3b 0a 20 20 20 20 72 5b 31 5d 20 3d 20 63 79 20   ┆y * scl->delta_x;     r[1] = cy ┆
0x17a800…2f5200   2a 20 73 78 20 2a 20 73 63 6c 2d 3e 64 65 6c 74 61 5f 79 3b 0a 20 20 20 20 72 5b 32 5d 20 3d 20   ┆* sx * scl->delta_y;     r[2] = ┆
0x17a800…2f5200   63 79 20 2a 20 63 78 20 2a 20 73 63 6c 2d 3e 64 65 6c 74 61 5f 7a 3b 0a 20 20 20 20 72 5b 33 5d   ┆cy * cx * scl->delta_z;     r[3]┆
0x17a800…2f5200   20 3d 20 73 68 69 66 74 2d 3e 64 65 6c 74 61 5f 7a 20 2b 20 70 74 2d 3e 7a 20 2d 20 28 72 5b 30   ┆ = shift->delta_z + pt->z - (r[0┆
0x17a800…2f5200   5d 20 2a 20 70 74 2d 3e 78 20 2b 20 72 5b 31 5d 20 2a 20 70 74 2d 3e 79 20 2b 20 72 5b 32 5d 20   ┆] * pt->x + r[1] * pt->y + r[2] ┆
0x17a800…2f5200   2a 20 70 74 2d 3e 7a 29 3b 0a 20 20 20 20 72 20 3d 20 6d 5b 33 5d 3b 0a 20 20 20 20 72 5b 30 5d   ┆* pt->z);     r = m[3];     r[0]┆
0x17a800…2f5200   20 3d 20 72 5b 31 5d 20 3d 20 72 5b 32 5d 20 3d 20 30 2e 30 3b 0a 20 20 20 20 72 5b 33 5d 20 3d   ┆ = r[1] = r[2] = 0.0;     r[3] =┆
0x17a800…2f5200   20 31 2e 30 3b 0a 7d 0a 0c 0a 0a 76 6f 69 64 0a 70 62 75 69 6c 64 5f 74 72 61 6e 5f 6d 61 74 72   ┆ 1.0; }    void pbuild_tran_matr┆
0x17a800…2f5200   69 78 33 28 20 70 74 2c 20 73 68 69 66 74 2c 20 78 5f 61 6e 67 6c 65 2c 20 79 5f 61 6e 67 6c 65   ┆ix3( pt, shift, x_angle, y_angle┆
0x17a800…2f5200   2c 20 7a 5f 61 6e 67 6c 65 2c 20 73 63 61 6c 65 2c 20 65 72 72 6f 72 5f 69 6e 64 2c 20 6d 61 74   ┆, z_angle, scale, error_ind, mat┆
0x17a800…2f5200   72 69 78 29 0a 20 20 20 20 50 70 6f 69 6e 74 33 09 2a 70 74 3b 09 09 2f 2a 20 66 69 78 65 64 20   ┆rix)     Ppoint3 *pt;  /* fixed ┆
0x17a800…2f5200   70 6f 69 6e 74 09 2a 2f 0a 20 20 20 20 50 76 65 63 33 09 2a 73 68 69 66 74 3b 09 09 2f 2a 20 73   ┆point */     Pvec3 *shift;  /* s┆
0x17a800…2f5200   68 69 66 74 20 76 65 63 74 6f 72 09 2a 2f 0a 20 20 20 20 50 66 6c 6f 61 74 09 78 5f 61 6e 67 6c   ┆hift vector */     Pfloat x_angl┆
0x17a800…2f5200   65 3b 09 2f 2a 20 72 6f 74 61 74 69 6f 6e 20 61 6e 67 6c 65 20 58 09 2a 2f 0a 20 20 20 20 50 66   ┆e; /* rotation angle X */     Pf┆
0x17a800…2f5200   6c 6f 61 74 09 79 5f 61 6e 67 6c 65 3b 09 2f 2a 20 72 6f 74 61 74 69 6f 6e 20 61 6e 67 6c 65 20   ┆loat y_angle; /* rotation angle ┆
0x17a800…2f5200   59 09 2a 2f 0a 20 20 20 20 50 66 6c 6f 61 74 09 7a 5f 61 6e 67 6c 65 3b 09 2f 2a 20 72 6f 74 61   ┆Y */     Pfloat z_angle; /* rota┆
0x17a800…2f5200   74 69 6f 6e 20 61 6e 67 6c 65 20 5a 09 2a 2f 0a 20 20 20 20 50 76 65 63 33 09 2a 73 63 61 6c 65   ┆tion angle Z */     Pvec3 *scale┆
0x17a800…2f5200   3b 09 09 2f 2a 20 73 63 61 6c 65 20 76 65 63 74 6f 72 09 2a 2f 0a 20 20 20 20 50 69 6e 74 09 2a   ┆;  /* scale vector */     Pint *┆
0x17a800…2f5200   65 72 72 6f 72 5f 69 6e 64 3b 09 2f 2a 20 4f 55 54 20 65 72 72 6f 72 20 69 6e 64 69 63 61 74 6f   ┆error_ind; /* OUT error indicato┆
0x17a800…2f5200   72 09 2a 2f 0a 20 20 20 20 50 6d 61 74 72 69 78 33 09 6d 61 74 72 69 78 3b 09 09 2f 2a 20 4f 55   ┆r */     Pmatrix3 matrix;  /* OU┆
0x17a800…2f5200   54 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6d 61 74 72 69 78 09 2a 2f 0a 7b 0a 20 20 20   ┆T transformation matrix */ {    ┆
0x17a800…2f5200   20 69 66 20 28 20 21 43 42 5f 45 4e 54 52 59 5f 43 48 45 43 4b 28 20 70 68 67 5f 63 75 72 5f 63   ┆ if ( !CB_ENTRY_CHECK( phg_cur_c┆
0x17a800…2f5200   70 68 2c 20 30 2c 20 50 66 6e 5f 49 4e 51 55 49 52 59 29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69   ┆ph, 0, Pfn_INQUIRY)) {  *error_i┆
0x17a800…2f5200   6e 64 20 3d 20 45 52 52 32 3b 0a 20 20 20 20 20 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 2a   ┆nd = ERR2;           } else {  *┆
0x17a800…2f5200   65 72 72 6f 72 5f 69 6e 64 20 3d 20 30 3b 0a 09 62 75 69 6c 64 5f 74 72 61 6e 73 66 6f 72 6d 33   ┆error_ind = 0;  build_transform3┆
0x17a800…2f5200   28 20 70 74 2c 20 73 68 69 66 74 2c 20 78 5f 61 6e 67 6c 65 2c 20 79 5f 61 6e 67 6c 65 2c 20 7a   ┆( pt, shift, x_angle, y_angle, z┆
0x17a800…2f5200   5f 61 6e 67 6c 65 2c 20 73 63 61 6c 65 2c 20 6d 61 74 72 69 78 29 3b 0a 20 20 20 20 7d 0a 7d 0a   ┆_angle, scale, matrix);     } } ┆
0x17a800…2f5200   0c 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 0a 62 75 69 6c 64 5f 74 72 61 6e 73 66 6f 72 6d 28 20   ┆   static void build_transform( ┆
0x17a800…2f5200   70 74 2c 20 73 68 69 66 74 2c 20 61 6e 67 2c 20 73 63 6c 2c 20 6d 29 0a 20 20 20 20 50 70 6f 69   ┆pt, shift, ang, scl, m)     Ppoi┆
0x17a800…2f5200   6e 74 09 2a 70 74 3b 09 09 2f 2a 20 66 69 78 65 64 20 70 6f 69 6e 74 09 2a 2f 0a 20 20 20 20 50   ┆nt *pt;  /* fixed point */     P┆
0x17a800…2f5200   76 65 63 09 2a 73 68 69 66 74 3b 09 09 2f 2a 20 73 68 69 66 74 20 76 65 63 74 6f 72 09 2a 2f 0a   ┆vec *shift;  /* shift vector */ ┆
0x17a800…2f5200   20 20 20 20 50 66 6c 6f 61 74 09 61 6e 67 3b 09 09 2f 2a 20 72 6f 74 61 74 69 6f 6e 20 61 6e 67   ┆    Pfloat ang;  /* rotation ang┆
0x17a800…2f5200   6c 65 09 2a 2f 0a 20 20 20 20 50 76 65 63 09 2a 73 63 6c 3b 09 09 2f 2a 20 73 63 61 6c 65 20 76   ┆le */     Pvec *scl;  /* scale v┆
0x17a800…2f5200   65 63 74 6f 72 09 2a 2f 0a 20 20 20 20 50 6d 61 74 72 69 78 09 6d 3b 09 09 2f 2a 20 4f 55 54 20   ┆ector */     Pmatrix m;  /* OUT ┆
0x17a800…2f5200   74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6d 61 74 72 69 78 09 2a 2f 0a 7b 0a 20 20 20 20 2f   ┆transformation matrix */ {     /┆
0x17a800…2f5200   2a 20 54 72 61 6e 73 6c 61 74 65 20 70 74 20 74 6f 20 74 68 65 20 6f 72 69 67 69 6e 2c 20 73 63   ┆* Translate pt to the origin, sc┆
0x17a800…2f5200   61 6c 65 2c 20 72 6f 74 61 74 65 2c 20 74 72 61 6e 73 6c 61 74 65 20 62 61 63 6b 20 74 6f 20 70   ┆ale, rotate, translate back to p┆
0x17a800…2f5200   74 2c 0a 20 20 20 20 20 2a 20 73 68 69 66 74 3a 0a 20 20 20 20 20 2a 09 09 09 54 20 2a 20 54 66   ┆t,      * shift:      *   T * Tf┆
0x17a800…2f5200   7e 20 2a 20 52 20 2a 20 53 20 2a 20 54 66 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 20 20   ┆~ * R * S * Tf.      *      *   ┆
0x17a800…2f5200   20 77 68 65 72 65 3a 09 54 20 69 73 20 74 68 65 20 22 73 68 69 66 74 22 20 74 72 61 6e 73 66 6f   ┆ where: T is the "shift" transfo┆
0x17a800…2f5200   72 6d 2c 0a 20 20 20 20 20 2a 09 09 09 54 66 20 69 61 20 74 68 65 20 74 72 61 6e 73 6c 61 74 69   ┆rm,      *   Tf ia the translati┆
0x17a800…2f5200   6f 6e 20 6f 66 20 70 74 20 74 6f 20 74 68 65 20 6f 72 69 67 69 6e 20 61 6e 64 0a 20 20 20 20 20   ┆on of pt to the origin and      ┆
0x17a800…2f5200   2a 09 09 09 54 66 7e 20 69 73 20 69 74 27 73 20 69 6e 76 65 72 73 65 2c 0a 20 20 20 20 20 2a 09   ┆*   Tf~ is it's inverse,      * ┆
0x17a800…2f5200   09 09 52 20 69 73 20 74 68 65 20 72 6f 74 61 74 69 6f 6e 20 74 72 61 6e 73 66 6f 72 6d 2c 0a 20   ┆  R is the rotation transform,  ┆
0x17a800…2f5200   20 20 20 20 2a 09 09 09 53 20 69 73 20 74 68 65 20 73 63 61 6c 69 6e 67 20 74 72 61 6e 73 66 6f   ┆    *   S is the scaling transfo┆
0x17a800…2f5200   72 6d 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 66 6c 6f 61 74 09 2a   ┆rm.      */     register float *┆
0x17a800…2f5200   72 3b 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 66 6c 6f 61 74 09 63 2c 20 73 3b 0a 0a 20 20 20   ┆r;     register float c, s;     ┆
0x17a800…2f5200   20 63 20 3d 20 63 6f 73 28 61 6e 67 29 3b 20 73 20 3d 20 73 69 6e 28 61 6e 67 29 3b 0a 0a 20 20   ┆ c = cos(ang); s = sin(ang);    ┆
0x17a800…2f5200   20 20 72 20 3d 20 6d 5b 30 5d 3b 0a 20 20 20 20 72 5b 30 5d 20 3d 20 63 20 2a 20 73 63 6c 2d 3e   ┆  r = m[0];     r[0] = c * scl->┆
0x17a800…2f5200   64 65 6c 74 61 5f 78 3b 0a 20 20 20 20 72 5b 31 5d 20 3d 20 2d 73 20 2a 20 73 63 6c 2d 3e 64 65   ┆delta_x;     r[1] = -s * scl->de┆
0x17a800…2f5200   6c 74 61 5f 79 3b 0a 20 20 20 20 72 5b 32 5d 20 3d 20 73 68 69 66 74 2d 3e 64 65 6c 74 61 5f 78   ┆lta_y;     r[2] = shift->delta_x┆
0x17a800…2f5200   20 2b 20 70 74 2d 3e 78 20 2d 20 63 20 2a 20 73 63 6c 2d 3e 64 65 6c 74 61 5f 78 20 2a 20 70 74   ┆ + pt->x - c * scl->delta_x * pt┆
0x17a800…2f5200   2d 3e 78 20 2b 20 73 20 2a 20 73 63 6c 2d 3e 64 65 6c 74 61 5f 79 20 2a 20 70 74 2d 3e 79 3b 0a   ┆->x + s * scl->delta_y * pt->y; ┆
0x17a800…2f5200   20 20 20 20 72 20 3d 20 6d 5b 31 5d 3b 0a 20 20 20 20 72 5b 30 5d 20 3d 20 73 20 2a 20 73 63 6c   ┆    r = m[1];     r[0] = s * scl┆
0x17a800…2f5200   2d 3e 64 65 6c 74 61 5f 78 3b 0a 20 20 20 20 72 5b 31 5d 20 3d 20 63 20 2a 20 73 63 6c 2d 3e 64   ┆->delta_x;     r[1] = c * scl->d┆
0x17a800…2f5200   65 6c 74 61 5f 79 3b 0a 20 20 20 20 72 5b 32 5d 20 3d 20 73 68 69 66 74 2d 3e 64 65 6c 74 61 5f   ┆elta_y;     r[2] = shift->delta_┆
0x17a800…2f5200   79 20 2b 20 70 74 2d 3e 79 20 2d 20 28 73 20 2a 20 73 63 6c 2d 3e 64 65 6c 74 61 5f 78 20 2a 20   ┆y + pt->y - (s * scl->delta_x * ┆
0x17a800…2f5200   70 74 2d 3e 78 20 2b 20 63 20 2a 20 73 63 6c 2d 3e 64 65 6c 74 61 5f 79 20 2a 20 70 74 2d 3e 79   ┆pt->x + c * scl->delta_y * pt->y┆
0x17a800…2f5200   29 3b 0a 20 20 20 20 72 20 3d 20 6d 5b 32 5d 3b 0a 20 20 20 20 72 5b 30 5d 20 3d 20 72 5b 31 5d   ┆);     r = m[2];     r[0] = r[1]┆
0x17a800…2f5200   20 3d 20 30 2e 30 3b 0a 20 20 20 20 72 5b 32 5d 20 3d 20 31 2e 30 3b 0a 7d 0a 0a 76 6f 69 64 0a   ┆ = 0.0;     r[2] = 1.0; }  void ┆
0x17a800…2f5200   70 62 75 69 6c 64 5f 74 72 61 6e 5f 6d 61 74 72 69 78 28 20 70 74 2c 20 73 68 69 66 74 2c 20 61   ┆pbuild_tran_matrix( pt, shift, a┆
0x17a800…2f5200   6e 67 6c 65 2c 20 73 63 61 6c 65 2c 20 65 72 72 6f 72 5f 69 6e 64 2c 20 6d 61 74 72 69 78 29 0a   ┆ngle, scale, error_ind, matrix) ┆
0x17a800…2f5200   20 20 20 20 50 70 6f 69 6e 74 09 2a 70 74 3b 09 09 2f 2a 20 66 69 78 65 64 20 70 6f 69 6e 74 09   ┆    Ppoint *pt;  /* fixed point ┆
0x17a800…2f5200   2a 2f 0a 20 20 20 20 50 76 65 63 09 2a 73 68 69 66 74 3b 09 09 2f 2a 20 73 68 69 66 74 20 76 65   ┆*/     Pvec *shift;  /* shift ve┆
0x17a800…2f5200   63 74 6f 72 09 2a 2f 0a 20 20 20 20 50 66 6c 6f 61 74 09 61 6e 67 6c 65 3b 09 09 2f 2a 20 72 6f   ┆ctor */     Pfloat angle;  /* ro┆
0x17a800…2f5200   74 61 74 69 6f 6e 20 61 6e 67 6c 65 09 2a 2f 0a 20 20 20 20 50 76 65 63 09 2a 73 63 61 6c 65 3b   ┆tation angle */     Pvec *scale;┆
0x17a800…2f5200   09 09 2f 2a 20 73 63 61 6c 65 20 76 65 63 74 6f 72 09 2a 2f 0a 20 20 20 20 50 69 6e 74 09 2a 65   ┆  /* scale vector */     Pint *e┆
0x17a800…2f5200   72 72 6f 72 5f 69 6e 64 3b 09 2f 2a 20 4f 55 54 20 65 72 72 6f 72 20 69 6e 64 69 63 61 74 6f 72   ┆rror_ind; /* OUT error indicator┆
0x17a800…2f5200   09 2a 2f 0a 20 20 20 20 50 6d 61 74 72 69 78 09 6d 61 74 72 69 78 3b 09 09 2f 2a 20 4f 55 54 20   ┆ */     Pmatrix matrix;  /* OUT ┆
0x17a800…2f5200   74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6d 61 74 72 69 78 09 2a 2f 0a 7b 0a 20 20 20 20 69   ┆transformation matrix */ {     i┆
0x17a800…2f5200   66 20 28 20 21 43 42 5f 45 4e 54 52 59 5f 43 48 45 43 4b 28 20 70 68 67 5f 63 75 72 5f 63 70 68   ┆f ( !CB_ENTRY_CHECK( phg_cur_cph┆
0x17a800…2f5200   2c 20 30 2c 20 50 66 6e 5f 49 4e 51 55 49 52 59 29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64   ┆, 0, Pfn_INQUIRY)) {  *error_ind┆
0x17a800…2f5200   20 3d 20 45 52 52 32 3b 0a 20 20 20 20 20 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 2a 65 72   ┆ = ERR2;           } else {  *er┆
0x17a800…2f5200   72 6f 72 5f 69 6e 64 20 3d 20 30 3b 0a 09 62 75 69 6c 64 5f 74 72 61 6e 73 66 6f 72 6d 28 20 70   ┆ror_ind = 0;  build_transform( p┆
0x17a800…2f5200   74 2c 20 73 68 69 66 74 2c 20 61 6e 67 6c 65 2c 20 73 63 61 6c 65 2c 20 6d 61 74 72 69 78 29 3b   ┆t, shift, angle, scale, matrix);┆
0x17a800…2f5200   0a 20 20 20 20 7d 0a 7d 0a 0c 0a 0a 76 6f 69 64 0a 70 63 6f 6d 70 6f 73 65 5f 74 72 61 6e 5f 6d   ┆     } }    void pcompose_tran_m┆
0x17a800…2f5200   61 74 72 69 78 33 28 20 6d 2c 20 70 74 2c 20 73 68 69 66 74 2c 20 78 5f 61 6e 67 2c 20 79 5f 61   ┆atrix3( m, pt, shift, x_ang, y_a┆
0x17a800…2f5200   6e 67 2c 20 7a 5f 61 6e 67 2c 20 73 63 61 6c 65 2c 20 65 72 72 6f 72 5f 69 6e 64 2c 20 72 65 73   ┆ng, z_ang, scale, error_ind, res┆
0x17a800…2f5200   75 6c 74 29 0a 20 20 20 20 50 6d 61 74 72 69 78 33 09 6d 3b 09 09 2f 2a 20 74 72 61 6e 73 66 6f   ┆ult)     Pmatrix3 m;  /* transfo┆
0x17a800…2f5200   72 6d 61 74 69 6f 6e 20 6d 61 74 72 69 78 09 2a 2f 0a 20 20 20 20 50 70 6f 69 6e 74 33 09 2a 70   ┆rmation matrix */     Ppoint3 *p┆
0x17a800…2f5200   74 3b 09 09 2f 2a 20 66 69 78 65 64 20 70 6f 69 6e 74 09 2a 2f 0a 20 20 20 20 50 76 65 63 33 09   ┆t;  /* fixed point */     Pvec3 ┆
0x17a800…2f5200   2a 73 68 69 66 74 3b 09 09 2f 2a 20 73 68 69 66 74 20 76 65 63 74 6f 72 09 2a 2f 0a 20 20 20 20   ┆*shift;  /* shift vector */     ┆
0x17a800…2f5200   50 66 6c 6f 61 74 09 78 5f 61 6e 67 3b 09 09 2f 2a 20 72 6f 74 61 74 69 6f 6e 20 61 6e 67 6c 65   ┆Pfloat x_ang;  /* rotation angle┆
0x17a800…2f5200   20 58 09 2a 2f 0a 20 20 20 20 50 66 6c 6f 61 74 09 79 5f 61 6e 67 3b 09 09 2f 2a 20 72 6f 74 61   ┆ X */     Pfloat y_ang;  /* rota┆
0x17a800…2f5200   74 69 6f 6e 20 61 6e 67 6c 65 20 59 09 2a 2f 0a 20 20 20 20 50 66 6c 6f 61 74 09 7a 5f 61 6e 67   ┆tion angle Y */     Pfloat z_ang┆
0x17a800…2f5200   3b 09 09 2f 2a 20 72 6f 74 61 74 69 6f 6e 20 61 6e 67 6c 65 20 5a 09 2a 2f 0a 20 20 20 20 50 76   ┆;  /* rotation angle Z */     Pv┆
0x17a800…2f5200   65 63 33 09 2a 73 63 61 6c 65 3b 09 09 2f 2a 20 73 63 61 6c 65 20 76 65 63 74 6f 72 09 2a 2f 0a   ┆ec3 *scale;  /* scale vector */ ┆
0x17a800…2f5200   20 20 20 20 50 69 6e 74 09 2a 65 72 72 6f 72 5f 69 6e 64 3b 09 2f 2a 20 4f 55 54 20 65 72 72 6f   ┆    Pint *error_ind; /* OUT erro┆
0x17a800…2f5200   72 20 69 6e 64 69 63 61 74 6f 72 09 2a 2f 0a 20 20 20 20 50 6d 61 74 72 69 78 33 09 72 65 73 75   ┆r indicator */     Pmatrix3 resu┆
0x17a800…2f5200   6c 74 3b 09 09 2f 2a 20 4f 55 54 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6d 61 74 72 69   ┆lt;  /* OUT transformation matri┆
0x17a800…2f5200   78 09 2a 2f 0a 7b 0a 20 20 20 20 50 6d 61 74 72 69 78 33 09 78 66 6f 72 6d 3b 0a 0a 20 20 20 20   ┆x */ {     Pmatrix3 xform;      ┆
0x17a800…2f5200   69 66 20 28 20 21 43 42 5f 45 4e 54 52 59 5f 43 48 45 43 4b 28 20 70 68 67 5f 63 75 72 5f 63 70   ┆if ( !CB_ENTRY_CHECK( phg_cur_cp┆
0x17a800…2f5200   68 2c 20 30 2c 20 50 66 6e 5f 49 4e 51 55 49 52 59 29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e   ┆h, 0, Pfn_INQUIRY)) {  *error_in┆
0x17a800…2f5200   64 20 3d 20 45 52 52 32 3b 0a 20 20 20 20 20 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 2a 65   ┆d = ERR2;           } else {  *e┆
0x17a800…2f5200   72 72 6f 72 5f 69 6e 64 20 3d 20 30 3b 0a 09 62 75 69 6c 64 5f 74 72 61 6e 73 66 6f 72 6d 33 28   ┆rror_ind = 0;  build_transform3(┆
0x17a800…2f5200   20 70 74 2c 20 73 68 69 66 74 2c 20 78 5f 61 6e 67 2c 20 79 5f 61 6e 67 2c 20 7a 5f 61 6e 67 2c   ┆ pt, shift, x_ang, y_ang, z_ang,┆
0x17a800…2f5200   20 73 63 61 6c 65 2c 20 78 66 6f 72 6d 29 3b 0a 09 2f 2a 20 41 73 73 75 6d 69 6e 67 20 70 72 65   ┆ scale, xform);  /* Assuming pre┆
0x17a800…2f5200   2d 6d 75 6c 74 69 70 6c 69 63 61 74 69 6f 6e 20 6f 66 20 6f 6c 64 20 62 79 20 6e 65 77 2e 20 2a   ┆-multiplication of old by new. *┆
0x17a800…2f5200   2f 0a 09 70 68 67 5f 6d 61 74 5f 6d 75 6c 28 72 65 73 75 6c 74 2c 20 6d 2c 20 78 66 6f 72 6d 29   ┆/  phg_mat_mul(result, m, xform)┆
0x17a800…2f5200   3b 0a 20 20 20 20 7d 0a 7d 0a 0a 76 6f 69 64 0a 70 63 6f 6d 70 6f 73 65 5f 74 72 61 6e 5f 6d 61   ┆;     } }  void pcompose_tran_ma┆
0x17a800…2f5200   74 72 69 78 28 20 6d 2c 20 70 74 2c 20 73 68 69 66 74 2c 20 61 6e 67 6c 65 2c 20 73 63 61 6c 65   ┆trix( m, pt, shift, angle, scale┆
0x17a800…2f5200   2c 20 65 72 72 6f 72 5f 69 6e 64 2c 20 72 65 73 75 6c 74 29 0a 20 20 20 20 50 6d 61 74 72 69 78   ┆, error_ind, result)     Pmatrix┆
0x17a800…2f5200   09 6d 3b 09 2f 2a 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 6d 61 74 72 69 78 09 2a 2f 0a   ┆ m; /* transformation matrix */ ┆
0x17a800…2f5200   20 20 20 20 50 70 6f 69 6e 74 09 2a 70 74 3b 09 2f 2a 20 66 69 78 65 64 20 70 6f 69 6e 74 09 2a   ┆    Ppoint *pt; /* fixed point *┆
0x17a800…2f5200   2f 0a 20 20 20 20 50 76 65 63 09 2a 73 68 69 66 74 3b 09 2f 2a 20 73 68 69 66 74 20 76 65 63 74   ┆/     Pvec *shift; /* shift vect┆
0x17a800…2f5200   6f 72 09 2a 2f 0a 20 20 20 20 50 66 6c 6f 61 74 09 61 6e 67 6c 65 3b 09 2f 2a 20 72 6f 74 61 74   ┆or */     Pfloat angle; /* rotat┆
0x17a800…2f5200   69 6f 6e 20 61 6e 67 6c 65 09 2a 2f 0a 20 20 20 20 50 76 65 63 09 2a 73 63 61 6c 65 3b 09 2f 2a   ┆ion angle */     Pvec *scale; /*┆
0x17a800…2f5200   20 73 63 61 6c 65 20 76 65 63 74 6f 72 09 2a 2f 0a 20 20 20 20 50 69 6e 74 09 2a 65 72 72 6f 72   ┆ scale vector */     Pint *error┆
0x17a800…2f5200   5f 69 6e 64 3b 09 2f 2a 20 4f 55 54 20 65 72 72 6f 72 20 69 6e 64 69 63 61 74 6f 72 09 2a 2f 0a   ┆_ind; /* OUT error indicator */ ┆
0x17a800…2f5200   20 20 20 20 50 6d 61 74 72 69 78 09 72 65 73 75 6c 74 3b 09 2f 2a 20 4f 55 54 20 74 72 61 6e 73   ┆    Pmatrix result; /* OUT trans┆
0x17a800…2f5200   66 6f 72 6d 61 74 69 6f 6e 20 6d 61 74 72 69 78 09 2a 2f 0a 7b 0a 20 20 20 20 50 6d 61 74 72 69   ┆formation matrix */ {     Pmatri┆
0x17a800…2f5200   78 09 78 66 6f 72 6d 3b 0a 0a 20 20 20 20 69 66 20 28 20 21 43 42 5f 45 4e 54 52 59 5f 43 48 45   ┆x xform;      if ( !CB_ENTRY_CHE┆
0x17a800…2f5200   43 4b 28 20 70 68 67 5f 63 75 72 5f 63 70 68 2c 20 30 2c 20 50 66 6e 5f 49 4e 51 55 49 52 59 29   ┆CK( phg_cur_cph, 0, Pfn_INQUIRY)┆
0x17a800…2f5200   29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 32 3b 0a 20 20 20 20 20 0a 20 20   ┆) {  *error_ind = ERR2;         ┆
0x17a800…2f5200   20 20 7d 20 65 6c 73 65 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 30 3b 0a 09 62 75 69   ┆  } else {  *error_ind = 0;  bui┆
0x17a800…2f5200   6c 64 5f 74 72 61 6e 73 66 6f 72 6d 28 20 70 74 2c 20 73 68 69 66 74 2c 20 61 6e 67 6c 65 2c 20   ┆ld_transform( pt, shift, angle, ┆
0x17a800…2f5200   73 63 61 6c 65 2c 20 78 66 6f 72 6d 29 3b 0a 09 2f 2a 20 41 73 73 75 6d 69 6e 67 20 70 72 65 2d   ┆scale, xform);  /* Assuming pre-┆
0x17a800…2f5200   6d 75 6c 74 69 70 6c 69 63 61 74 69 6f 6e 20 6f 66 20 6f 6c 64 20 62 79 20 6e 65 77 2e 20 2a 2f   ┆multiplication of old by new. */┆
0x17a800…2f5200   0a 09 70 68 67 5f 6d 61 74 5f 6d 75 6c 5f 33 78 33 28 72 65 73 75 6c 74 2c 20 6d 2c 20 78 66 6f   ┆  phg_mat_mul_3x3(result, m, xfo┆
0x17a800…2f5200   72 6d 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0c 0a 0a 76 6f 69 64 0a 70 65 76 61 6c 5f 76 69 65 77 5f   ┆rm);     } }    void peval_view_┆
0x17a800…2f5200   6f 72 69 5f 6d 61 74 72 69 78 33 28 20 76 72 70 2c 20 76 70 6e 2c 20 76 75 70 2c 20 65 72 72 6f   ┆ori_matrix3( vrp, vpn, vup, erro┆
0x17a800…2f5200   72 5f 69 6e 64 2c 20 6d 29 0a 20 20 20 20 50 70 6f 69 6e 74 33 09 09 2a 76 72 70 3b 09 09 2f 2a   ┆r_ind, m)     Ppoint3  *vrp;  /*┆
0x17a800…2f5200   20 76 69 65 77 20 72 65 66 65 72 65 6e 63 65 20 70 6f 69 6e 74 09 2a 2f 0a 20 20 20 20 72 65 67   ┆ view reference point */     reg┆
0x17a800…2f5200   69 73 74 65 72 20 50 76 65 63 33 09 2a 76 70 6e 3b 09 09 2f 2a 20 76 69 65 77 20 70 6c 61 6e 65   ┆ister Pvec3 *vpn;  /* view plane┆
0x17a800…2f5200   20 6e 6f 72 6d 61 6c 09 2a 2f 0a 20 20 20 20 50 76 65 63 33 09 09 2a 76 75 70 3b 09 09 2f 2a 20   ┆ normal */     Pvec3  *vup;  /* ┆
0x17a800…2f5200   76 69 65 77 20 75 70 20 76 65 63 74 6f 72 09 2a 2f 0a 20 20 20 20 50 69 6e 74 09 09 2a 65 72 72   ┆view up vector */     Pint  *err┆
0x17a800…2f5200   6f 72 5f 69 6e 64 3b 09 2f 2a 20 4f 55 54 20 65 72 72 6f 72 20 69 6e 64 69 63 61 74 6f 72 09 2a   ┆or_ind; /* OUT error indicator *┆
0x17a800…2f5200   2f 0a 20 20 20 20 50 6d 61 74 72 69 78 33 09 09 6d 3b 09 09 2f 2a 20 4f 55 54 20 76 69 65 77 20   ┆/     Pmatrix3  m;  /* OUT view ┆
0x17a800…2f5200   6f 72 69 65 6e 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 09 2a 2f 0a 7b 0a 20 20 20 20 2f 2a 20 20   ┆orientation matrix */ {     /*  ┆
0x17a800…2f5200   54 72 61 6e 73 6c 61 74 65 20 74 6f 20 56 52 50 20 74 68 65 6e 20 63 68 61 6e 67 65 20 74 68 65   ┆Translate to VRP then change the┆
0x17a800…2f5200   20 62 61 73 69 73 2e 0a 20 20 20 20 20 2a 20 20 54 68 65 20 6f 6c 64 20 62 61 73 69 73 20 69 73   ┆ basis.      *  The old basis is┆
0x17a800…2f5200   3a 20 65 31 20 3d 20 3c 20 31 2c 20 30 2c 20 30 3e 2c 20 20 65 32 20 3d 20 3c 20 30 2c 20 31 2c   ┆: e1 = < 1, 0, 0>,  e2 = < 0, 1,┆
0x17a800…2f5200   20 30 3e 2c 20 65 33 20 3d 20 3c 20 30 2c 20 30 2c 20 31 3e 2e 0a 20 20 20 20 20 2a 20 54 68 65   ┆ 0>, e3 = < 0, 0, 1>.      * The┆
0x17a800…2f5200   20 6e 65 77 20 62 61 73 69 73 20 69 73 3a 20 28 22 78 22 20 6d 65 61 6e 73 20 63 72 6f 73 73 20   ┆ new basis is: ("x" means cross ┆
0x17a800…2f5200   70 72 6f 64 75 63 74 29 0a 09 09 65 33 27 20 3d 20 56 50 4e 20 2f 20 7c 56 50 4e 7c 0a 09 09 65   ┆product)   e3' = VPN / |VPN|   e┆
0x17a800…2f5200   31 27 20 3d 20 56 55 50 20 78 20 56 50 4e 20 2f 20 7c 56 55 50 20 78 20 56 50 4e 7c 0a 09 09 65   ┆1' = VUP x VPN / |VUP x VPN|   e┆
0x17a800…2f5200   32 27 20 3d 20 65 33 27 20 78 20 65 31 27 0a 20 20 20 20 20 2a 20 54 68 65 72 65 66 6f 72 65 20   ┆2' = e3' x e1'      * Therefore ┆
0x17a800…2f5200   74 68 65 20 74 72 61 6e 73 66 6f 72 6d 20 66 72 6f 6d 20 6f 6c 64 20 74 6f 20 6e 65 77 20 69 73   ┆the transform from old to new is┆
0x17a800…2f5200   20 78 27 20 3d 20 41 54 78 2c 20 77 68 65 72 65 3a 0a 0a 09 20 20 20 20 20 7c 20 65 31 27 20 30   ┆ x' = ATx, where:        | e1' 0┆
0x17a800…2f5200   20 7c 20 20 20 20 20 20 20 20 20 7c 20 31 20 30 20 30 20 2d 76 72 70 2e 78 20 7c 0a 09 20 41 20   ┆ |         | 1 0 0 -vrp.x |   A ┆
0x17a800…2f5200   3d 20 7c 20 20 20 20 20 20 20 7c 2c 20 20 20 20 54 20 3d 20 7c 20 30 20 31 20 30 20 2d 76 72 70   ┆= |       |,    T = | 0 1 0 -vrp┆
0x17a800…2f5200   2e 79 20 7c 0a 09 20 20 20 20 20 7c 20 65 32 27 20 30 20 7c 20 20 20 20 20 20 20 20 20 7c 20 30   ┆.y |       | e2' 0 |         | 0┆
0x17a800…2f5200   20 30 20 31 20 2d 76 72 70 2e 7a 20 7c 0a 09 20 20 20 20 20 7c 20 20 20 20 20 20 20 7c 20 20 20   ┆ 0 1 -vrp.z |       |       |   ┆
0x17a800…2f5200   20 20 20 20 20 20 7c 20 30 20 30 20 30 20 20 20 20 31 20 20 20 7c 0a 09 20 20 20 20 20 7c 20 65   ┆      | 0 0 0    1   |       | e┆
0x17a800…2f5200   33 27 20 30 20 7c 0a 09 20 20 20 20 20 7c 20 20 20 20 20 20 20 7c 0a 09 20 20 20 20 20 7c 20 2d   ┆3' 0 |       |       |       | -┆
0x17a800…2f5200   30 2d 20 20 31 7c 0a 20 20 20 20 20 2a 2f 0a 0a 20 20 20 20 2f 2a 20 54 68 65 73 65 20 65 69 27   ┆0-  1|      */      /* These ei'┆
0x17a800…2f5200   73 20 61 72 65 20 72 65 61 6c 6c 79 20 65 69 20 70 72 69 6d 65 73 2e 20 2a 2f 0a 20 20 20 20 72   ┆s are really ei primes. */     r┆
0x17a800…2f5200   65 67 69 73 74 65 72 20 50 66 6c 6f 61 74 09 2a 65 31 20 3d 20 6d 5b 30 5d 2c 20 2a 65 33 20 3d   ┆egister Pfloat *e1 = m[0], *e3 =┆
0x17a800…2f5200   20 6d 5b 32 5d 2c 20 2a 65 32 20 3d 20 6d 5b 31 5d 3b 0a 20 20 20 20 72 65 67 69 73 74 65 72 20   ┆ m[2], *e2 = m[1];     register ┆
0x17a800…2f5200   64 6f 75 62 6c 65 09 73 2c 20 6d 61 67 5f 76 70 6e 3b 0a 0a 20 20 20 20 69 66 20 28 20 21 43 42   ┆double s, mag_vpn;      if ( !CB┆
0x17a800…2f5200   5f 45 4e 54 52 59 5f 43 48 45 43 4b 28 20 70 68 67 5f 63 75 72 5f 63 70 68 2c 20 30 2c 20 50 66   ┆_ENTRY_CHECK( phg_cur_cph, 0, Pf┆
0x17a800…2f5200   6e 5f 49 4e 51 55 49 52 59 29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 32   ┆n_INQUIRY)) {  *error_ind = ERR2┆
0x17a800…2f5200   3b 0a 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 20 50 48 47 5f 5a 45 52 4f 5f 4d 41 47 28   ┆;      } else if ( PHG_ZERO_MAG(┆
0x17a800…2f5200   20 6d 61 67 5f 76 70 6e 20 3d 20 50 48 47 5f 4d 41 47 5f 56 33 28 20 76 70 6e 29 29 20 29 20 7b   ┆ mag_vpn = PHG_MAG_V3( vpn)) ) {┆
0x17a800…2f5200   0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 31 35 39 3b 0a 0a 20 20 20 20 7d 20 65 6c   ┆  *error_ind = ERR159;      } el┆
0x17a800…2f5200   73 65 20 69 66 20 28 20 50 48 47 5f 5a 45 52 4f 5f 4d 41 47 28 20 50 48 47 5f 4d 41 47 5f 56 33   ┆se if ( PHG_ZERO_MAG( PHG_MAG_V3┆
0x17a800…2f5200   28 76 75 70 29 29 20 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 31 36 30 3b   ┆(vup)) ) {  *error_ind = ERR160;┆
0x17a800…2f5200   0a 20 20 20 20 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 2f 2a 20 65 31 27 20 3d 20 56 55 50   ┆          } else {  /* e1' = VUP┆
0x17a800…2f5200   20 78 20 56 50 4e 20 2f 20 7c 56 55 50 20 78 20 56 50 4e 7c 2c 20 62 75 74 20 64 6f 20 74 68 65   ┆ x VPN / |VUP x VPN|, but do the┆
0x17a800…2f5200   20 64 69 76 69 73 69 6f 6e 20 6c 61 74 65 72 2e 20 2a 2f 0a 09 65 31 5b 30 5d 20 3d 20 76 75 70   ┆ division later. */  e1[0] = vup┆
0x17a800…2f5200   2d 3e 64 65 6c 74 61 5f 79 20 2a 20 76 70 6e 2d 3e 64 65 6c 74 61 5f 7a 20 2d 20 76 75 70 2d 3e   ┆->delta_y * vpn->delta_z - vup->┆
0x17a800…2f5200   64 65 6c 74 61 5f 7a 20 2a 20 76 70 6e 2d 3e 64 65 6c 74 61 5f 79 3b 0a 09 65 31 5b 31 5d 20 3d   ┆delta_z * vpn->delta_y;  e1[1] =┆
0x17a800…2f5200   20 76 75 70 2d 3e 64 65 6c 74 61 5f 7a 20 2a 20 76 70 6e 2d 3e 64 65 6c 74 61 5f 78 20 2d 20 76   ┆ vup->delta_z * vpn->delta_x - v┆
0x17a800…2f5200   75 70 2d 3e 64 65 6c 74 61 5f 78 20 2a 20 76 70 6e 2d 3e 64 65 6c 74 61 5f 7a 3b 0a 09 65 31 5b   ┆up->delta_x * vpn->delta_z;  e1[┆
0x17a800…2f5200   32 5d 20 3d 20 76 75 70 2d 3e 64 65 6c 74 61 5f 78 20 2a 20 76 70 6e 2d 3e 64 65 6c 74 61 5f 79   ┆2] = vup->delta_x * vpn->delta_y┆
0x17a800…2f5200   20 2d 20 76 75 70 2d 3e 64 65 6c 74 61 5f 79 20 2a 20 76 70 6e 2d 3e 64 65 6c 74 61 5f 78 3b 0a   ┆ - vup->delta_y * vpn->delta_x; ┆
0x17a800…2f5200   09 73 20 3d 20 73 71 72 74 28 20 65 31 5b 30 5d 20 2a 20 65 31 5b 30 5d 20 2b 20 65 31 5b 31 5d   ┆ s = sqrt( e1[0] * e1[0] + e1[1]┆
0x17a800…2f5200   20 2a 20 65 31 5b 31 5d 20 2b 20 65 31 5b 32 5d 20 2a 20 65 31 5b 32 5d 29 3b 0a 0a 09 2f 2a 20   ┆ * e1[1] + e1[2] * e1[2]);   /* ┆
0x17a800…2f5200   43 68 65 63 6b 20 66 6f 72 20 76 75 70 20 61 6e 64 20 76 70 6e 20 63 6f 6c 69 6e 65 61 72 20 28   ┆Check for vup and vpn colinear (┆
0x17a800…2f5200   7a 65 72 6f 20 64 6f 74 20 70 72 6f 64 75 63 74 29 2e 20 2a 2f 0a 09 69 66 20 28 20 50 48 47 5f   ┆zero dot product). */  if ( PHG_┆
0x17a800…2f5200   5a 45 52 4f 5f 4d 41 47 28 20 73 29 20 29 20 7b 0a 09 20 20 20 20 2a 65 72 72 6f 72 5f 69 6e 64   ┆ZERO_MAG( s) ) {      *error_ind┆
0x17a800…2f5200   20 3d 20 45 52 52 31 36 31 3b 0a 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 2a 65 72 72 6f   ┆ = ERR161;   } else {      *erro┆
0x17a800…2f5200   72 5f 69 6e 64 20 3d 20 30 3b 0a 0a 09 20 20 20 20 2f 2a 20 4e 6f 72 6d 61 6c 69 7a 65 20 65 31   ┆r_ind = 0;       /* Normalize e1┆
0x17a800…2f5200   20 2a 2f 0a 09 20 20 20 20 73 20 3d 20 31 2e 30 20 2f 20 73 3b 0a 09 20 20 20 20 65 31 5b 30 5d   ┆ */      s = 1.0 / s;      e1[0]┆
0x17a800…2f5200   20 2a 3d 20 73 3b 20 65 31 5b 31 5d 20 2a 3d 20 73 3b 20 65 31 5b 32 5d 20 2a 3d 20 73 3b 0a 0a   ┆ *= s; e1[1] *= s; e1[2] *= s;  ┆
0x17a800…2f5200   09 20 20 20 20 2f 2a 20 65 33 20 3d 20 56 50 4e 20 2f 20 7c 56 50 4e 7c 20 2a 2f 0a 09 20 20 20   ┆     /* e3 = VPN / |VPN| */     ┆
0x17a800…2f5200   20 73 20 3d 20 31 2e 30 20 2f 20 6d 61 67 5f 76 70 6e 3b 0a 09 20 20 20 20 65 33 5b 30 5d 20 3d   ┆ s = 1.0 / mag_vpn;      e3[0] =┆
0x17a800…2f5200   20 73 20 2a 20 76 70 6e 2d 3e 64 65 6c 74 61 5f 78 3b 20 65 33 5b 31 5d 20 3d 20 73 20 2a 20 76   ┆ s * vpn->delta_x; e3[1] = s * v┆
0x17a800…2f5200   70 6e 2d 3e 64 65 6c 74 61 5f 79 3b 20 65 33 5b 32 5d 20 3d 20 73 20 2a 20 76 70 6e 2d 3e 64 65   ┆pn->delta_y; e3[2] = s * vpn->de┆
0x17a800…2f5200   6c 74 61 5f 7a 3b 0a 0a 0a 09 20 20 20 20 2f 2a 20 65 32 20 3d 20 65 33 20 78 20 65 31 20 2a 2f   ┆lta_z;        /* e2 = e3 x e1 */┆
0x17a800…2f5200   0a 09 20 20 20 20 65 32 5b 30 5d 20 3d 20 65 33 5b 31 5d 20 2a 20 65 31 5b 32 5d 20 2d 20 65 33   ┆      e2[0] = e3[1] * e1[2] - e3┆
0x17a800…2f5200   5b 32 5d 20 2a 20 65 31 5b 31 5d 3b 0a 09 20 20 20 20 65 32 5b 31 5d 20 3d 20 65 33 5b 32 5d 20   ┆[2] * e1[1];      e2[1] = e3[2] ┆
0x17a800…2f5200   2a 20 65 31 5b 30 5d 20 2d 20 65 33 5b 30 5d 20 2a 20 65 31 5b 32 5d 3b 0a 09 20 20 20 20 65 32   ┆* e1[0] - e3[0] * e1[2];      e2┆
0x17a800…2f5200   5b 32 5d 20 3d 20 65 33 5b 30 5d 20 2a 20 65 31 5b 31 5d 20 2d 20 65 33 5b 31 5d 20 2a 20 65 31   ┆[2] = e3[0] * e1[1] - e3[1] * e1┆
0x17a800…2f5200   5b 30 5d 3b 0a 0a 09 20 20 20 20 2f 2a 20 41 64 64 20 74 68 65 20 74 72 61 6e 73 6c 61 74 69 6f   ┆[0];       /* Add the translatio┆
0x17a800…2f5200   6e 20 2a 2f 0a 09 20 20 20 20 65 31 5b 33 5d 20 3d 20 2d 28 20 65 31 5b 30 5d 20 2a 20 76 72 70   ┆n */      e1[3] = -( e1[0] * vrp┆
0x17a800…2f5200   2d 3e 78 20 2b 20 65 31 5b 31 5d 20 2a 20 76 72 70 2d 3e 79 20 2b 20 65 31 5b 32 5d 20 2a 20 76   ┆->x + e1[1] * vrp->y + e1[2] * v┆
0x17a800…2f5200   72 70 2d 3e 7a 29 3b 0a 09 20 20 20 20 65 32 5b 33 5d 20 3d 20 2d 28 20 65 32 5b 30 5d 20 2a 20   ┆rp->z);      e2[3] = -( e2[0] * ┆
0x17a800…2f5200   76 72 70 2d 3e 78 20 2b 20 65 32 5b 31 5d 20 2a 20 76 72 70 2d 3e 79 20 2b 20 65 32 5b 32 5d 20   ┆vrp->x + e2[1] * vrp->y + e2[2] ┆
0x17a800…2f5200   2a 20 76 72 70 2d 3e 7a 29 3b 0a 09 20 20 20 20 65 33 5b 33 5d 20 3d 20 2d 28 20 65 33 5b 30 5d   ┆* vrp->z);      e3[3] = -( e3[0]┆
0x17a800…2f5200   20 2a 20 76 72 70 2d 3e 78 20 2b 20 65 33 5b 31 5d 20 2a 20 76 72 70 2d 3e 79 20 2b 20 65 33 5b   ┆ * vrp->x + e3[1] * vrp->y + e3[┆
0x17a800…2f5200   32 5d 20 2a 20 76 72 70 2d 3e 7a 29 3b 0a 0a 09 20 20 20 20 2f 2a 20 48 6f 6d 6f 67 65 6e 65 6f   ┆2] * vrp->z);       /* Homogeneo┆
0x17a800…2f5200   75 73 20 65 6e 74 72 69 65 73 20 2a 2f 0a 09 20 20 20 20 6d 5b 33 5d 5b 30 5d 20 3d 20 6d 5b 33   ┆us entries */      m[3][0] = m[3┆
0x17a800…2f5200   5d 5b 31 5d 20 3d 20 6d 5b 33 5d 5b 32 5d 20 3d 20 30 2e 30 3b 0a 09 20 20 20 20 6d 5b 33 5d 5b   ┆][1] = m[3][2] = 0.0;      m[3][┆
0x17a800…2f5200   33 5d 20 3d 20 31 2e 30 3b 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0c 0a 0a 76 6f 69 64 0a 70 65 76   ┆3] = 1.0;  }     } }    void pev┆
0x17a800…2f5200   61 6c 5f 76 69 65 77 5f 6f 72 69 5f 6d 61 74 72 69 78 28 20 76 72 70 2c 20 76 75 70 2c 20 65 72   ┆al_view_ori_matrix( vrp, vup, er┆
0x17a800…2f5200   72 6f 72 5f 69 6e 64 2c 20 6d 29 0a 20 20 20 20 50 70 6f 69 6e 74 09 09 2a 76 72 70 3b 09 09 2f   ┆ror_ind, m)     Ppoint  *vrp;  /┆
0x17a800…2f5200   2a 20 76 69 65 77 20 72 65 66 65 72 65 6e 63 65 20 70 6f 69 6e 74 09 2a 2f 0a 20 20 20 20 72 65   ┆* view reference point */     re┆
0x17a800…2f5200   67 69 73 74 65 72 20 50 76 65 63 09 2a 76 75 70 3b 09 09 2f 2a 20 76 69 65 77 20 75 70 20 76 65   ┆gister Pvec *vup;  /* view up ve┆
0x17a800…2f5200   63 74 6f 72 09 2a 2f 0a 20 20 20 20 50 69 6e 74 09 09 2a 65 72 72 6f 72 5f 69 6e 64 3b 09 2f 2a   ┆ctor */     Pint  *error_ind; /*┆
0x17a800…2f5200   20 4f 55 54 20 65 72 72 6f 72 20 69 6e 64 69 63 61 74 6f 72 09 2a 2f 0a 20 20 20 20 72 65 67 69   ┆ OUT error indicator */     regi┆
0x17a800…2f5200   73 74 65 72 20 50 6d 61 74 72 69 78 09 6d 3b 09 09 2f 2a 20 4f 55 54 20 76 69 65 77 20 6f 72 69   ┆ster Pmatrix m;  /* OUT view ori┆
0x17a800…2f5200   65 6e 74 61 74 69 6f 6e 20 6d 61 74 72 69 78 09 2a 2f 0a 7b 0a 20 20 20 20 2f 2a 20 54 68 65 20   ┆entation matrix */ {     /* The ┆
0x17a800…2f5200   6f 6c 64 20 62 61 73 69 73 20 69 73 3a 20 65 31 20 3d 20 3c 20 31 2c 20 30 3e 2c 20 20 65 32 20   ┆old basis is: e1 = < 1, 0>,  e2 ┆
0x17a800…2f5200   3d 20 3c 20 30 2c 20 31 3e 0a 20 20 20 20 20 2a 20 54 68 65 20 6e 65 77 20 62 61 73 69 73 20 69   ┆= < 0, 1>      * The new basis i┆
0x17a800…2f5200   73 3a 20 65 31 27 20 3d 20 3c 20 76 75 70 2e 79 2c 20 2d 76 75 70 2e 78 3e 20 2f 20 7c 76 75 70   ┆s: e1' = < vup.y, -vup.x> / |vup┆
0x17a800…2f5200   7c 2c 20 20 65 32 27 20 3d 20 76 75 70 20 2f 20 7c 76 75 70 7c 2e 0a 20 20 20 20 20 2a 20 54 68   ┆|,  e2' = vup / |vup|.      * Th┆
0x17a800…2f5200   65 72 65 66 6f 72 65 20 74 68 65 20 74 72 61 6e 73 66 6f 72 6d 20 66 6f 72 20 6f 6c 64 20 74 6f   ┆erefore the transform for old to┆
0x17a800…2f5200   20 6e 65 77 20 69 73 20 78 27 20 3d 20 41 54 78 2c 20 77 68 65 72 65 3a 0a 0a 09 20 20 20 20 20   ┆ new is x' = ATx, where:        ┆
0x17a800…2f5200   7c 20 65 31 27 20 30 20 7c 20 20 20 20 20 20 20 20 20 7c 20 31 20 30 20 2d 76 72 70 2e 78 20 7c   ┆| e1' 0 |         | 1 0 -vrp.x |┆
0x17a800…2f5200   0a 09 20 41 20 3d 20 7c 20 20 20 20 20 20 20 7c 2c 20 20 20 20 54 20 3d 20 7c 20 30 20 31 20 2d   ┆   A = |       |,    T = | 0 1 -┆
0x17a800…2f5200   76 72 70 2e 79 20 7c 0a 09 20 20 20 20 20 7c 20 65 32 27 20 30 20 7c 20 20 20 20 20 20 20 20 20   ┆vrp.y |       | e2' 0 |         ┆
0x17a800…2f5200   7c 20 30 20 30 20 20 20 20 31 20 20 20 7c 0a 09 20 20 20 20 20 7c 20 20 20 20 20 20 20 7c 0a 09   ┆| 0 0    1   |       |       |  ┆
0x17a800…2f5200   20 20 20 20 20 7c 20 2d 30 2d 20 20 31 7c 0a 20 20 20 20 20 2a 2f 0a 0a 20 20 20 20 72 65 67 69   ┆     | -0-  1|      */      regi┆
0x17a800…2f5200   73 74 65 72 20 64 6f 75 62 6c 65 09 73 3b 0a 0a 20 20 20 20 69 66 20 28 20 21 43 42 5f 45 4e 54   ┆ster double s;      if ( !CB_ENT┆
0x17a800…2f5200   52 59 5f 43 48 45 43 4b 28 20 70 68 67 5f 63 75 72 5f 63 70 68 2c 20 30 2c 20 50 66 6e 5f 49 4e   ┆RY_CHECK( phg_cur_cph, 0, Pfn_IN┆
0x17a800…2f5200   51 55 49 52 59 29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 32 3b 0a 0a 20   ┆QUIRY)) {  *error_ind = ERR2;   ┆
0x17a800…2f5200   20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 20 50 48 47 5f 5a 45 52 4f 5f 4d 41 47 28 20 73 20 3d   ┆   } else if ( PHG_ZERO_MAG( s =┆
0x17a800…2f5200   20 50 48 47 5f 4d 41 47 5f 56 32 28 20 76 75 70 29 29 20 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69   ┆ PHG_MAG_V2( vup)) ) {  *error_i┆
0x17a800…2f5200   6e 64 20 3d 20 45 52 52 31 36 30 3b 0a 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 2a 65 72 72   ┆nd = ERR160;      } else {  *err┆
0x17a800…2f5200   6f 72 5f 69 6e 64 20 3d 20 30 3b 0a 0a 09 2f 2a 20 43 6f 6d 70 75 74 65 20 74 68 65 20 6e 65 77   ┆or_ind = 0;   /* Compute the new┆
0x17a800…2f5200   20 62 61 73 69 73 2c 20 6e 6f 74 65 20 74 68 61 74 20 6d 5b 30 5d 20 69 73 20 65 31 27 20 61 6e   ┆ basis, note that m[0] is e1' an┆
0x17a800…2f5200   64 20 6d 5b 31 5d 20 69 73 20 65 32 27 2e 20 2a 2f 0a 09 73 20 3d 20 31 2e 30 20 2f 20 73 3b 0a   ┆d m[1] is e2'. */  s = 1.0 / s; ┆
0x17a800…2f5200   09 6d 5b 30 5d 5b 30 5d 20 3d 20 73 20 2a 20 76 75 70 2d 3e 64 65 6c 74 61 5f 79 3b 0a 09 6d 5b   ┆ m[0][0] = s * vup->delta_y;  m[┆
0x17a800…2f5200   30 5d 5b 31 5d 20 3d 20 73 20 2a 20 2d 76 75 70 2d 3e 64 65 6c 74 61 5f 78 3b 0a 09 6d 5b 31 5d   ┆0][1] = s * -vup->delta_x;  m[1]┆
0x17a800…2f5200   5b 30 5d 20 3d 20 73 20 2a 20 76 75 70 2d 3e 64 65 6c 74 61 5f 78 3b 0a 09 6d 5b 31 5d 5b 31 5d   ┆[0] = s * vup->delta_x;  m[1][1]┆
0x17a800…2f5200   20 3d 20 73 20 2a 20 76 75 70 2d 3e 64 65 6c 74 61 5f 79 3b 0a 0a 09 2f 2a 20 41 64 64 20 74 68   ┆ = s * vup->delta_y;   /* Add th┆
0x17a800…2f5200   65 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 2a 2f 0a 09 6d 5b 30 5d 5b 32 5d 20 3d 20 2d 28 20 6d   ┆e translation */  m[0][2] = -( m┆
0x17a800…2f5200   5b 30 5d 5b 30 5d 20 2a 20 76 72 70 2d 3e 78 20 2b 20 6d 5b 30 5d 5b 31 5d 20 2a 20 76 72 70 2d   ┆[0][0] * vrp->x + m[0][1] * vrp-┆
0x17a800…2f5200   3e 79 29 3b 0a 09 6d 5b 31 5d 5b 32 5d 20 3d 20 2d 28 20 6d 5b 31 5d 5b 30 5d 20 2a 20 76 72 70   ┆>y);  m[1][2] = -( m[1][0] * vrp┆
0x17a800…2f5200   2d 3e 78 20 2b 20 6d 5b 31 5d 5b 31 5d 20 2a 20 76 72 70 2d 3e 79 29 3b 0a 0a 09 2f 2a 20 48 6f   ┆->x + m[1][1] * vrp->y);   /* Ho┆
0x17a800…2f5200   6d 6f 67 65 6e 65 6f 75 73 20 65 6e 74 72 69 65 73 20 2a 2f 0a 09 6d 5b 32 5d 5b 30 5d 20 3d 20   ┆mogeneous entries */  m[2][0] = ┆
0x17a800…2f5200   6d 5b 32 5d 5b 31 5d 20 3d 20 30 2e 30 3b 0a 09 6d 5b 32 5d 5b 32 5d 20 3d 20 31 2e 30 3b 0a 20   ┆m[2][1] = 0.0;  m[2][2] = 1.0;  ┆
0x17a800…2f5200   20 20 20 7d 0a 7d 0a 0c 0a 0a 2f 2a 20 31 2e 20 54 72 61 6e 73 6c 61 74 65 20 77 69 6e 64 6f 77   ┆   } }    /* 1. Translate window┆
0x17a800…2f5200   27 73 20 6c 6f 77 65 72 2d 6c 65 66 74 2d 63 6f 72 6e 65 72 20 74 6f 20 30 2c 30 2e 0a 20 2a 20   ┆'s lower-left-corner to 0,0.  * ┆
0x17a800…2f5200   32 2e 20 53 63 61 6c 65 20 73 69 7a 65 20 6f 66 20 77 69 6e 64 6f 77 20 74 6f 20 73 69 7a 65 20   ┆2. Scale size of window to size ┆
0x17a800…2f5200   6f 66 20 76 69 65 77 70 6f 72 74 2e 0a 20 2a 20 33 2e 20 54 72 61 6e 73 6c 61 74 65 20 30 2c 30   ┆of viewport.  * 3. Translate 0,0┆
0x17a800…2f5200   20 74 6f 20 76 69 65 77 70 6f 72 74 27 73 20 6c 6f 77 65 72 2d 6c 65 66 74 2d 63 6f 72 6e 65 72   ┆ to viewport's lower-left-corner┆
0x17a800…2f5200   2e 0a 20 2a 0a 20 2a 20 4d 61 74 72 69 63 65 73 20 61 72 65 3a 0a 20 2a 20 31 3a 09 31 20 30 20   ┆.  *  * Matrices are:  * 1: 1 0 ┆
0x17a800…2f5200   2d 77 69 6e 2d 3e 78 6d 69 6e 09 32 3a 09 73 63 61 6c 65 2e 78 09 30 09 30 09 33 3a 09 31 20 30   ┆-win->xmin 2: scale.x 0 0 3: 1 0┆
0x17a800…2f5200   20 20 76 70 2d 3e 78 6d 69 6e 0a 20 2a 20 09 30 20 31 20 2d 77 69 6e 2d 3e 79 6d 69 6e 09 09 20   ┆  vp->xmin  *  0 1 -win->ymin   ┆
0x17a800…2f5200   30 09 73 63 61 6c 65 2e 79 09 30 09 09 30 20 31 20 20 76 70 2d 3e 79 6d 69 6e 0a 20 2a 20 09 30   ┆0 scale.y 0  0 1  vp->ymin  *  0┆
0x17a800…2f5200   20 30 20 20 20 31 09 09 09 20 30 09 30 09 31 09 09 30 20 30 20 20 20 31 0a 20 2a 2f 0a 0a 76 6f   ┆ 0   1    0 0 1  0 0   1  */  vo┆
0x17a800…2f5200   69 64 0a 70 65 76 61 6c 5f 76 69 65 77 5f 6d 61 70 5f 6d 61 74 72 69 78 28 20 6d 61 70 2c 20 65   ┆id peval_view_map_matrix( map, e┆
0x17a800…2f5200   72 72 6f 72 5f 69 6e 64 2c 20 6d 29 0a 20 20 20 20 50 76 69 65 77 5f 6d 61 70 09 2a 6d 61 70 3b   ┆rror_ind, m)     Pview_map *map;┆
0x17a800…2f5200   09 09 2f 2a 20 76 69 65 77 20 6d 61 70 70 69 6e 67 09 2a 2f 0a 20 20 20 20 50 69 6e 74 09 09 2a   ┆  /* view mapping */     Pint  *┆
0x17a800…2f5200   65 72 72 6f 72 5f 69 6e 64 3b 09 2f 2a 20 4f 55 54 20 65 72 72 6f 72 20 69 6e 64 69 63 61 74 6f   ┆error_ind; /* OUT error indicato┆
0x17a800…2f5200   72 09 2a 2f 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 50 6d 61 74 72 69 78 09 6d 3b 09 09 2f 2a   ┆r */     register Pmatrix m;  /*┆
0x17a800…2f5200   20 4f 55 54 20 76 69 65 77 20 6d 61 70 70 69 6e 67 20 6d 61 74 72 69 78 09 2a 2f 0a 7b 0a 20 20   ┆ OUT view mapping matrix */ {   ┆
0x17a800…2f5200   20 20 72 65 67 69 73 74 65 72 20 50 6c 69 6d 69 74 09 2a 77 69 6e 20 3d 20 26 6d 61 70 2d 3e 77   ┆  register Plimit *win = &map->w┆
0x17a800…2f5200   69 6e 3b 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 50 6c 69 6d 69 74 09 2a 76 70 20 3d 20 26 6d   ┆in;     register Plimit *vp = &m┆
0x17a800…2f5200   61 70 2d 3e 70 72 6f 6a 5f 76 70 3b 0a 0a 20 20 20 20 69 66 20 28 20 21 43 42 5f 45 4e 54 52 59   ┆ap->proj_vp;      if ( !CB_ENTRY┆
0x17a800…2f5200   5f 43 48 45 43 4b 28 20 70 68 67 5f 63 75 72 5f 63 70 68 2c 20 30 2c 20 50 66 6e 5f 49 4e 51 55   ┆_CHECK( phg_cur_cph, 0, Pfn_INQU┆
0x17a800…2f5200   49 52 59 29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 32 3b 0a 20 20 20 20   ┆IRY)) {  *error_ind = ERR2;     ┆
0x17a800…2f5200   20 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 20 21 28 77 69 6e 2d 3e 78 5f 6d 69 6e 20 3c   ┆      } else if ( !(win->x_min <┆
0x17a800…2f5200   20 77 69 6e 2d 3e 78 5f 6d 61 78 29 20 7c 7c 20 21 28 77 69 6e 2d 3e 79 5f 6d 69 6e 20 3c 20 77   ┆ win->x_max) || !(win->y_min < w┆
0x17a800…2f5200   69 6e 2d 3e 79 5f 6d 61 78 29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 31   ┆in->y_max)) {  *error_ind = ERR1┆
0x17a800…2f5200   35 31 3b 0a 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 20 21 28 76 70 2d 3e 78 5f 6d 69 6e   ┆51;      } else if ( !(vp->x_min┆
0x17a800…2f5200   20 3c 20 76 70 2d 3e 78 5f 6d 61 78 29 20 7c 7c 20 21 28 76 70 2d 3e 79 5f 6d 69 6e 20 3c 20 76   ┆ < vp->x_max) || !(vp->y_min < v┆
0x17a800…2f5200   70 2d 3e 79 5f 6d 61 78 29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 31 35   ┆p->y_max)) {  *error_ind = ERR15┆
0x17a800…2f5200   32 3b 0a 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 20 21 43 42 5f 49 4e 5f 52 41 4e 47 45   ┆2;      } else if ( !CB_IN_RANGE┆
0x17a800…2f5200   28 20 50 44 54 5f 4e 50 43 5f 58 4d 49 4e 2c 20 50 44 54 5f 4e 50 43 5f 58 4d 41 58 2c 20 76 70   ┆( PDT_NPC_XMIN, PDT_NPC_XMAX, vp┆
0x17a800…2f5200   2d 3e 78 5f 6d 69 6e 29 0a 09 7c 7c 20 21 43 42 5f 49 4e 5f 52 41 4e 47 45 28 20 50 44 54 5f 4e   ┆->x_min)  || !CB_IN_RANGE( PDT_N┆
0x17a800…2f5200   50 43 5f 58 4d 49 4e 2c 20 50 44 54 5f 4e 50 43 5f 58 4d 41 58 2c 20 76 70 2d 3e 78 5f 6d 61 78   ┆PC_XMIN, PDT_NPC_XMAX, vp->x_max┆
0x17a800…2f5200   29 0a 09 7c 7c 20 21 43 42 5f 49 4e 5f 52 41 4e 47 45 28 20 50 44 54 5f 4e 50 43 5f 59 4d 49 4e   ┆)  || !CB_IN_RANGE( PDT_NPC_YMIN┆
0x17a800…2f5200   2c 20 50 44 54 5f 4e 50 43 5f 59 4d 41 58 2c 20 76 70 2d 3e 79 5f 6d 69 6e 29 0a 09 7c 7c 20 21   ┆, PDT_NPC_YMAX, vp->y_min)  || !┆
0x17a800…2f5200   43 42 5f 49 4e 5f 52 41 4e 47 45 28 20 50 44 54 5f 4e 50 43 5f 59 4d 49 4e 2c 20 50 44 54 5f 4e   ┆CB_IN_RANGE( PDT_NPC_YMIN, PDT_N┆
0x17a800…2f5200   50 43 5f 59 4d 41 58 2c 20 76 70 2d 3e 79 5f 6d 61 78 29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69   ┆PC_YMAX, vp->y_max)) {  *error_i┆
0x17a800…2f5200   6e 64 20 3d 20 45 52 52 31 35 35 3b 0a 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 72 65 67 69   ┆nd = ERR155;      } else {  regi┆
0x17a800…2f5200   73 74 65 72 20 66 6c 6f 61 74 09 73 78 2c 20 73 79 3b 09 09 2f 2a 20 73 63 61 6c 65 20 66 61 63   ┆ster float sx, sy;  /* scale fac┆
0x17a800…2f5200   74 6f 72 73 3a 20 6c 65 6e 28 76 70 29 20 2f 20 6c 65 6e 28 77 69 6e 29 20 2a 2f 0a 0a 09 2a 65   ┆tors: len(vp) / len(win) */   *e┆
0x17a800…2f5200   72 72 6f 72 5f 69 6e 64 20 3d 20 30 3b 0a 09 73 78 20 3d 20 28 76 70 2d 3e 78 5f 6d 61 78 20 2d   ┆rror_ind = 0;  sx = (vp->x_max -┆
0x17a800…2f5200   20 76 70 2d 3e 78 5f 6d 69 6e 29 20 2f 20 28 77 69 6e 2d 3e 78 5f 6d 61 78 20 2d 20 77 69 6e 2d   ┆ vp->x_min) / (win->x_max - win-┆
0x17a800…2f5200   3e 78 5f 6d 69 6e 29 3b 0a 09 73 79 20 3d 20 28 76 70 2d 3e 79 5f 6d 61 78 20 2d 20 76 70 2d 3e   ┆>x_min);  sy = (vp->y_max - vp->┆
0x17a800…2f5200   79 5f 6d 69 6e 29 20 2f 20 28 77 69 6e 2d 3e 79 5f 6d 61 78 20 2d 20 77 69 6e 2d 3e 79 5f 6d 69   ┆y_min) / (win->y_max - win->y_mi┆
0x17a800…2f5200   6e 29 3b 0a 09 6d 5b 30 5d 5b 30 5d 20 3d 20 73 78 3b 09 6d 5b 30 5d 5b 31 5d 20 3d 20 30 2e 30   ┆n);  m[0][0] = sx; m[0][1] = 0.0┆
0x17a800…2f5200   3b 09 6d 5b 30 5d 5b 32 5d 20 3d 20 73 78 20 2a 20 28 2d 77 69 6e 2d 3e 78 5f 6d 69 6e 29 20 2b   ┆; m[0][2] = sx * (-win->x_min) +┆
0x17a800…2f5200   20 76 70 2d 3e 78 5f 6d 69 6e 3b 0a 09 6d 5b 31 5d 5b 30 5d 20 3d 20 30 2e 30 3b 09 6d 5b 31 5d   ┆ vp->x_min;  m[1][0] = 0.0; m[1]┆
0x17a800…2f5200   5b 31 5d 20 3d 20 73 79 3b 09 6d 5b 31 5d 5b 32 5d 20 3d 20 73 79 20 2a 20 28 2d 77 69 6e 2d 3e   ┆[1] = sy; m[1][2] = sy * (-win->┆
0x17a800…2f5200   79 5f 6d 69 6e 29 20 2b 20 76 70 2d 3e 79 5f 6d 69 6e 3b 0a 09 6d 5b 32 5d 5b 30 5d 20 3d 20 30   ┆y_min) + vp->y_min;  m[2][0] = 0┆
0x17a800…2f5200   2e 30 3b 09 6d 5b 32 5d 5b 31 5d 20 3d 20 30 2e 30 3b 09 6d 5b 32 5d 5b 32 5d 20 3d 20 31 2e 30   ┆.0; m[2][1] = 0.0; m[2][2] = 1.0┆
0x17a800…2f5200   3b 0a 20 20 20 20 7d 0a 7d 0a 0c 0a 0a 76 6f 69 64 0a 70 65 76 61 6c 5f 76 69 65 77 5f 6d 61 70   ┆;     } }    void peval_view_map┆
0x17a800…2f5200   5f 6d 61 74 72 69 78 33 28 20 6d 61 70 2c 20 65 72 72 6f 72 5f 69 6e 64 2c 20 6d 29 0a 20 20 20   ┆_matrix3( map, error_ind, m)    ┆
0x17a800…2f5200   20 50 76 69 65 77 5f 6d 61 70 33 20 20 09 2a 6d 61 70 3b 09 09 2f 2a 20 76 69 65 77 20 6d 61 70   ┆ Pview_map3   *map;  /* view map┆
0x17a800…2f5200   70 69 6e 67 09 2a 2f 0a 20 20 20 20 50 69 6e 74 09 09 2a 65 72 72 6f 72 5f 69 6e 64 3b 09 2f 2a   ┆ping */     Pint  *error_ind; /*┆
0x17a800…2f5200   20 4f 55 54 20 65 72 72 6f 72 20 69 6e 64 69 63 61 74 6f 72 09 2a 2f 0a 20 20 20 20 72 65 67 69   ┆ OUT error indicator */     regi┆
0x17a800…2f5200   73 74 65 72 20 50 6d 61 74 72 69 78 33 09 6d 3b 09 09 2f 2a 20 4f 55 54 20 76 69 65 77 20 6d 61   ┆ster Pmatrix3 m;  /* OUT view ma┆
0x17a800…2f5200   70 70 69 6e 67 20 6d 61 74 72 69 78 09 2a 2f 0a 7b 0a 20 20 20 20 2f 2a 20 50 72 6f 63 65 64 75   ┆pping matrix */ {     /* Procedu┆
0x17a800…2f5200   72 65 3a 0a 20 20 20 20 20 20 28 50 65 72 73 70 65 63 74 69 76 65 29 3a 0a 09 20 2d 20 54 72 61   ┆re:       (Perspective):   - Tra┆
0x17a800…2f5200   6e 73 6c 61 74 65 20 74 6f 20 50 52 50 2c 09 09 09 54 63 0a 09 20 2d 20 43 6f 6e 76 65 72 74 20   ┆nslate to PRP,   Tc   - Convert ┆
0x17a800…2f5200   74 6f 20 6c 65 66 74 20 68 61 6e 64 65 64 20 63 6f 6f 72 64 73 2c 09 54 6c 72 0a 09 20 2d 20 53   ┆to left handed coords, Tlr   - S┆
0x17a800…2f5200   68 65 61 72 2c 09 09 09 09 48 0a 09 20 2d 20 53 63 61 6c 65 20 74 6f 20 63 61 6e 6f 6e 69 63 61   ┆hear,    H   - Scale to canonica┆
0x17a800…2f5200   6c 20 76 69 65 77 20 76 6f 6c 75 6d 65 2c 09 53 0a 09 20 2d 20 4e 6f 72 6d 61 6c 69 7a 65 20 70   ┆l view volume, S   - Normalize p┆
0x17a800…2f5200   65 72 73 70 65 63 74 69 76 65 20 76 69 65 77 20 76 6f 6c 75 6d 65 2c 09 4e 74 70 0a 09 20 2d 20   ┆erspective view volume, Ntp   - ┆
0x17a800…2f5200   53 63 61 6c 65 20 74 6f 20 76 69 65 77 70 6f 72 74 2c 09 09 09 53 76 70 0a 09 20 2d 20 43 6f 6e   ┆Scale to viewport,   Svp   - Con┆
0x17a800…2f5200   76 65 72 74 20 74 6f 20 72 69 67 68 74 20 68 61 6e 64 65 64 20 63 6f 6f 72 64 73 2c 09 54 6c 72   ┆vert to right handed coords, Tlr┆
0x17a800…2f5200   0a 09 20 2d 20 54 72 61 6e 73 6c 61 74 65 20 74 6f 20 76 69 65 77 70 6f 72 74 2c 09 09 54 76 70   ┆   - Translate to viewport,  Tvp┆
0x17a800…2f5200   0a 0a 20 20 20 20 20 20 28 50 61 72 61 6c 6c 65 6c 29 3a 0a 09 20 2d 20 54 72 61 6e 73 6c 61 74   ┆        (Parallel):   - Translat┆
0x17a800…2f5200   65 20 74 6f 20 76 69 65 77 20 70 6c 61 6e 65 2c 09 09 54 63 0a 09 20 2d 20 53 68 65 61 72 20 61   ┆e to view plane,  Tc   - Shear a┆
0x17a800…2f5200   62 6f 75 74 20 74 68 65 20 76 69 65 77 20 70 6c 61 6e 65 2c 09 09 48 0a 09 20 2d 20 54 72 61 6e   ┆bout the view plane,  H   - Tran┆
0x17a800…2f5200   73 6c 61 74 65 20 62 61 63 6b 2c 09 09 09 54 63 20 69 6e 76 65 72 73 65 0a 09 20 2d 20 54 72 61   ┆slate back,   Tc inverse   - Tra┆
0x17a800…2f5200   6e 73 6c 61 74 65 20 77 69 6e 64 6f 77 20 74 6f 20 6f 72 69 67 69 6e 2c 09 09 54 6c 0a 09 20 2d   ┆nslate window to origin,  Tl   -┆
0x17a800…2f5200   20 53 63 61 6c 65 20 74 6f 20 63 61 6e 6f 6e 69 63 61 6c 20 76 69 65 77 20 76 6f 6c 75 6d 65 2c   ┆ Scale to canonical view volume,┆
0x17a800…2f5200   09 53 0a 09 20 2d 20 53 63 61 6c 65 20 74 6f 20 76 69 65 77 70 6f 72 74 2c 09 09 09 53 76 70 0a   ┆ S   - Scale to viewport,   Svp ┆
0x17a800…2f5200   09 20 2d 20 54 72 61 6e 73 6c 61 74 65 20 74 6f 20 76 69 65 77 70 6f 72 74 2c 09 09 54 76 70 0a   ┆  - Translate to viewport,  Tvp ┆
0x17a800…2f5200   0a 09 20 53 65 65 20 70 65 76 61 6c 76 69 65 77 6d 61 70 70 69 6e 67 6d 61 74 72 69 78 33 5f 64   ┆   See pevalviewmappingmatrix3_d┆
0x17a800…2f5200   65 62 75 67 20 66 6f 72 20 74 68 65 20 6d 61 74 72 69 63 65 73 2e 0a 20 20 20 20 20 2a 2f 0a 0a   ┆ebug for the matrices.      */  ┆
0x17a800…2f5200   20 20 20 20 72 65 67 69 73 74 65 72 20 50 66 6c 6f 61 74 09 2a 72 3b 0a 20 20 20 20 72 65 67 69   ┆    register Pfloat *r;     regi┆
0x17a800…2f5200   73 74 65 72 20 50 70 6f 69 6e 74 33 09 2a 70 72 70 20 3d 20 26 6d 61 70 2d 3e 70 72 6f 6a 5f 72   ┆ster Ppoint3 *prp = &map->proj_r┆
0x17a800…2f5200   65 66 5f 70 6f 69 6e 74 3b 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 50 6c 69 6d 69 74 33 09 2a   ┆ef_point;     register Plimit3 *┆
0x17a800…2f5200   76 70 20 3d 20 26 6d 61 70 2d 3e 70 72 6f 6a 5f 76 70 3b 0a 20 20 20 20 72 65 67 69 73 74 65 72   ┆vp = &map->proj_vp;     register┆
0x17a800…2f5200   20 50 6c 69 6d 69 74 09 2a 77 69 6e 20 3d 20 26 6d 61 70 2d 3e 77 69 6e 3b 0a 0a 20 20 20 20 2f   ┆ Plimit *win = &map->win;      /┆
0x17a800…2f5200   2a 20 54 68 65 73 65 20 61 72 65 20 6f 72 64 65 72 65 64 20 72 6f 75 67 68 6c 79 20 62 79 20 74   ┆* These are ordered roughly by t┆
0x17a800…2f5200   68 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 20 75 73 65 64 2c 20 74 68 65 20 6d 6f 73   ┆he number of times used, the mos┆
0x17a800…2f5200   74 0a 20 20 20 20 20 2a 20 75 73 65 64 20 69 73 20 66 69 72 73 74 2e 20 20 54 68 6f 73 65 20 75   ┆t      * used is first.  Those u┆
0x17a800…2f5200   73 65 64 20 74 77 69 63 65 20 6f 72 20 6c 65 73 73 20 61 72 65 6e 27 74 20 64 65 63 6c 61 72 65   ┆sed twice or less aren't declare┆
0x17a800…2f5200   64 20 72 65 67 69 73 74 65 72 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 72 65 67 69 73 74 65 72   ┆d register.      */     register┆
0x17a800…2f5200   20 64 6f 75 62 6c 65 09 73 7a 2c 20 73 78 2c 20 73 79 3b 0a 20 20 20 20 72 65 67 69 73 74 65 72   ┆ double sz, sx, sy;     register┆
0x17a800…2f5200   20 64 6f 75 62 6c 65 09 7a 66 3b 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 64 6f 75 62 6c 65 09   ┆ double zf;     register double ┆
0x17a800…2f5200   64 78 20 3d 20 76 70 2d 3e 78 5f 6d 61 78 20 2d 20 76 70 2d 3e 78 5f 6d 69 6e 3b 0a 20 20 20 20   ┆dx = vp->x_max - vp->x_min;     ┆
0x17a800…2f5200   72 65 67 69 73 74 65 72 20 64 6f 75 62 6c 65 09 64 79 20 3d 20 76 70 2d 3e 79 5f 6d 61 78 20 2d   ┆register double dy = vp->y_max -┆
0x17a800…2f5200   20 76 70 2d 3e 79 5f 6d 69 6e 3b 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 64 6f 75 62 6c 65 09   ┆ vp->y_min;     register double ┆
0x17a800…2f5200   68 78 2c 20 68 79 3b 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 64 6f 75 62 6c 65 09 64 3b 0a 20   ┆hx, hy;     register double d;  ┆
0x17a800…2f5200   20 20 20 09 20 20 20 20 20 64 6f 75 62 6c 65 09 64 7a 20 3d 20 76 70 2d 3e 7a 5f 6d 61 78 20 2d   ┆         double dz = vp->z_max -┆
0x17a800…2f5200   20 76 70 2d 3e 7a 5f 6d 69 6e 3b 0a 20 20 20 20 09 20 20 20 20 20 64 6f 75 62 6c 65 09 76 76 7a   ┆ vp->z_min;           double vvz┆
0x17a800…2f5200   20 3d 20 6d 61 70 2d 3e 66 72 6f 6e 74 5f 70 6c 61 6e 65 20 2d 20 6d 61 70 2d 3e 62 61 63 6b 5f   ┆ = map->front_plane - map->back_┆
0x17a800…2f5200   70 6c 61 6e 65 3b 0a 0a 20 20 20 20 69 66 20 28 20 21 43 42 5f 45 4e 54 52 59 5f 43 48 45 43 4b   ┆plane;      if ( !CB_ENTRY_CHECK┆
0x17a800…2f5200   28 20 70 68 67 5f 63 75 72 5f 63 70 68 2c 20 30 2c 20 50 66 6e 5f 49 4e 51 55 49 52 59 29 29 20   ┆( phg_cur_cph, 0, Pfn_INQUIRY)) ┆
0x17a800…2f5200   7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 32 3b 0a 0a 20 20 20 20 7d 20 65 6c 73   ┆{  *error_ind = ERR2;      } els┆
0x17a800…2f5200   65 20 69 66 20 28 20 21 28 77 69 6e 2d 3e 78 5f 6d 69 6e 20 3c 20 77 69 6e 2d 3e 78 5f 6d 61 78   ┆e if ( !(win->x_min < win->x_max┆
0x17a800…2f5200   29 20 7c 7c 20 21 28 77 69 6e 2d 3e 79 5f 6d 69 6e 20 3c 20 77 69 6e 2d 3e 79 5f 6d 61 78 29 29   ┆) || !(win->y_min < win->y_max))┆
0x17a800…2f5200   20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 31 35 31 3b 0a 0a 20 20 20 20 7d 20   ┆ {  *error_ind = ERR151;      } ┆
0x17a800…2f5200   65 6c 73 65 20 69 66 20 28 20 21 28 76 70 2d 3e 78 5f 6d 69 6e 20 3c 20 76 70 2d 3e 78 5f 6d 61   ┆else if ( !(vp->x_min < vp->x_ma┆
0x17a800…2f5200   78 29 20 7c 7c 20 21 28 76 70 2d 3e 79 5f 6d 69 6e 20 3c 20 76 70 2d 3e 79 5f 6d 61 78 29 0a 09   ┆x) || !(vp->y_min < vp->y_max)  ┆
0x17a800…2f5200   7c 7c 20 21 28 76 70 2d 3e 7a 5f 6d 69 6e 20 3c 3d 20 76 70 2d 3e 7a 5f 6d 61 78 29 20 29 20 7b   ┆|| !(vp->z_min <= vp->z_max) ) {┆
0x17a800…2f5200   0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 31 35 32 3b 0a 20 20 20 20 0a 20 20 20 20   ┆  *error_ind = ERR152;          ┆
0x17a800…2f5200   7d 20 65 6c 73 65 20 69 66 20 28 20 50 48 47 5f 4e 45 41 52 5f 5a 45 52 4f 28 20 76 76 7a 29 20   ┆} else if ( PHG_NEAR_ZERO( vvz) ┆
0x17a800…2f5200   26 26 20 76 70 2d 3e 7a 5f 6d 69 6e 20 21 3d 20 76 70 2d 3e 7a 5f 6d 61 78 29 20 7b 0a 09 2a 65   ┆&& vp->z_min != vp->z_max) {  *e┆
0x17a800…2f5200   72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 31 35 38 3b 0a 0a 20 20 20 20 7d 20 65 6c 73 65 20 69   ┆rror_ind = ERR158;      } else i┆
0x17a800…2f5200   66 20 28 20 6d 61 70 2d 3e 70 72 6f 6a 5f 74 79 70 65 20 3d 3d 20 50 54 59 50 45 5f 50 45 52 53   ┆f ( map->proj_type == PTYPE_PERS┆
0x17a800…2f5200   50 45 43 54 0a 09 26 26 20 70 72 70 2d 3e 7a 20 3c 20 6d 61 70 2d 3e 66 72 6f 6e 74 5f 70 6c 61   ┆PECT  && prp->z < map->front_pla┆
0x17a800…2f5200   6e 65 20 26 26 20 70 72 70 2d 3e 7a 20 3e 20 6d 61 70 2d 3e 62 61 63 6b 5f 70 6c 61 6e 65 20 29   ┆ne && prp->z > map->back_plane )┆
0x17a800…2f5200   20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 31 36 32 3b 0a 0a 20 20 20 20 7d 20   ┆ {  *error_ind = ERR162;      } ┆
0x17a800…2f5200   65 6c 73 65 20 69 66 20 28 20 70 72 70 2d 3e 7a 20 3d 3d 20 6d 61 70 2d 3e 76 69 65 77 5f 70 6c   ┆else if ( prp->z == map->view_pl┆
0x17a800…2f5200   61 6e 65 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 31 36 33 3b 0a 20 20 20   ┆ane) {  *error_ind = ERR163;    ┆
0x17a800…2f5200   20 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 20 6d 61 70 2d 3e 66 72 6f 6e 74 5f 70 6c 61   ┆      } else if ( map->front_pla┆
0x17a800…2f5200   6e 65 20 3c 20 6d 61 70 2d 3e 62 61 63 6b 5f 70 6c 61 6e 65 29 20 7b 0a 09 2a 65 72 72 6f 72 5f   ┆ne < map->back_plane) {  *error_┆
0x17a800…2f5200   69 6e 64 20 3d 20 45 52 52 31 36 34 3b 0a 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 20 21   ┆ind = ERR164;      } else if ( !┆
0x17a800…2f5200   43 42 5f 49 4e 5f 52 41 4e 47 45 28 20 50 44 54 5f 4e 50 43 5f 58 4d 49 4e 2c 20 50 44 54 5f 4e   ┆CB_IN_RANGE( PDT_NPC_XMIN, PDT_N┆
0x17a800…2f5200   50 43 5f 58 4d 41 58 2c 20 76 70 2d 3e 78 5f 6d 69 6e 29 0a 09 7c 7c 20 21 43 42 5f 49 4e 5f 52   ┆PC_XMAX, vp->x_min)  || !CB_IN_R┆
0x17a800…2f5200   41 4e 47 45 28 20 50 44 54 5f 4e 50 43 5f 58 4d 49 4e 2c 20 50 44 54 5f 4e 50 43 5f 58 4d 41 58   ┆ANGE( PDT_NPC_XMIN, PDT_NPC_XMAX┆
0x17a800…2f5200   2c 20 76 70 2d 3e 78 5f 6d 61 78 29 0a 09 7c 7c 20 21 43 42 5f 49 4e 5f 52 41 4e 47 45 28 20 50   ┆, vp->x_max)  || !CB_IN_RANGE( P┆
0x17a800…2f5200   44 54 5f 4e 50 43 5f 59 4d 49 4e 2c 20 50 44 54 5f 4e 50 43 5f 59 4d 41 58 2c 20 76 70 2d 3e 79   ┆DT_NPC_YMIN, PDT_NPC_YMAX, vp->y┆
0x17a800…2f5200   5f 6d 69 6e 29 0a 09 7c 7c 20 21 43 42 5f 49 4e 5f 52 41 4e 47 45 28 20 50 44 54 5f 4e 50 43 5f   ┆_min)  || !CB_IN_RANGE( PDT_NPC_┆
0x17a800…2f5200   59 4d 49 4e 2c 20 50 44 54 5f 4e 50 43 5f 59 4d 41 58 2c 20 76 70 2d 3e 79 5f 6d 61 78 29 0a 09   ┆YMIN, PDT_NPC_YMAX, vp->y_max)  ┆
0x17a800…2f5200   7c 7c 20 21 43 42 5f 49 4e 5f 52 41 4e 47 45 28 20 50 44 54 5f 4e 50 43 5f 5a 4d 49 4e 2c 20 50   ┆|| !CB_IN_RANGE( PDT_NPC_ZMIN, P┆
0x17a800…2f5200   44 54 5f 4e 50 43 5f 5a 4d 41 58 2c 20 76 70 2d 3e 7a 5f 6d 69 6e 29 0a 09 7c 7c 20 21 43 42 5f   ┆DT_NPC_ZMAX, vp->z_min)  || !CB_┆
0x17a800…2f5200   49 4e 5f 52 41 4e 47 45 28 20 50 44 54 5f 4e 50 43 5f 5a 4d 49 4e 2c 20 50 44 54 5f 4e 50 43 5f   ┆IN_RANGE( PDT_NPC_ZMIN, PDT_NPC_┆
0x17a800…2f5200   5a 4d 41 58 2c 20 76 70 2d 3e 7a 5f 6d 61 78 29 20 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64   ┆ZMAX, vp->z_max) ) {  *error_ind┆
0x17a800…2f5200   20 3d 20 45 52 52 31 35 35 3b 0a 20 20 20 20 0a 0c 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20   ┆ = ERR155;            } else if ┆
0x17a800…2f5200   28 20 6d 61 70 2d 3e 70 72 6f 6a 5f 74 79 70 65 20 3d 3d 20 50 54 59 50 45 5f 50 45 52 53 50 45   ┆( map->proj_type == PTYPE_PERSPE┆
0x17a800…2f5200   43 54 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 30 3b 0a 09 64 20 3d 20 70 72 70 2d   ┆CT) {  *error_ind = 0;  d = prp-┆
0x17a800…2f5200   3e 7a 20 2d 20 6d 61 70 2d 3e 76 69 65 77 5f 70 6c 61 6e 65 3b 0a 09 73 7a 20 3d 20 31 2e 30 20   ┆>z - map->view_plane;  sz = 1.0 ┆
0x17a800…2f5200   2f 20 28 70 72 70 2d 3e 7a 20 2d 20 6d 61 70 2d 3e 62 61 63 6b 5f 70 6c 61 6e 65 29 3b 0a 09 73   ┆/ (prp->z - map->back_plane);  s┆
0x17a800…2f5200   78 20 3d 20 73 7a 20 2a 20 64 20 2a 20 32 2e 30 20 2f 20 28 77 69 6e 2d 3e 78 5f 6d 61 78 20 2d   ┆x = sz * d * 2.0 / (win->x_max -┆
0x17a800…2f5200   20 77 69 6e 2d 3e 78 5f 6d 69 6e 29 3b 0a 09 73 79 20 3d 20 73 7a 20 2a 20 64 20 2a 20 32 2e 30   ┆ win->x_min);  sy = sz * d * 2.0┆
0x17a800…2f5200   20 2f 20 28 77 69 6e 2d 3e 79 5f 6d 61 78 20 2d 20 77 69 6e 2d 3e 79 5f 6d 69 6e 29 3b 0a 09 68   ┆ / (win->y_max - win->y_min);  h┆
0x17a800…2f5200   78 20 3d 20 28 70 72 70 2d 3e 78 20 2d 20 30 2e 35 20 2a 20 28 77 69 6e 2d 3e 78 5f 6d 69 6e 20   ┆x = (prp->x - 0.5 * (win->x_min ┆
0x17a800…2f5200   2b 20 77 69 6e 2d 3e 78 5f 6d 61 78 29 29 20 2f 20 64 3b 0a 09 68 79 20 3d 20 28 70 72 70 2d 3e   ┆+ win->x_max)) / d;  hy = (prp->┆
0x17a800…2f5200   79 20 2d 20 30 2e 35 20 2a 20 28 77 69 6e 2d 3e 79 5f 6d 69 6e 20 2b 20 77 69 6e 2d 3e 79 5f 6d   ┆y - 0.5 * (win->y_min + win->y_m┆
0x17a800…2f5200   61 78 29 29 20 2f 20 64 3b 0a 0a 09 72 20 3d 20 6d 5b 30 5d 3b 0a 09 72 5b 30 5d 20 3d 20 30 2e   ┆ax)) / d;   r = m[0];  r[0] = 0.┆
0x17a800…2f5200   35 20 2a 20 64 78 20 2a 20 73 78 3b 0a 09 72 5b 31 5d 20 3d 20 30 2e 30 3b 0a 09 72 5b 32 5d 20   ┆5 * dx * sx;  r[1] = 0.0;  r[2] ┆
0x17a800…2f5200   3d 20 2d 28 30 2e 35 20 2a 20 64 78 20 2a 20 28 73 78 20 2a 20 68 78 20 2b 20 73 7a 29 20 2b 20   ┆= -(0.5 * dx * (sx * hx + sz) + ┆
0x17a800…2f5200   73 7a 20 2a 20 76 70 2d 3e 78 5f 6d 69 6e 29 3b 0a 09 72 5b 33 5d 20 3d 20 2d 28 30 2e 35 20 2a   ┆sz * vp->x_min);  r[3] = -(0.5 *┆
0x17a800…2f5200   20 64 78 20 2a 20 73 78 20 2a 20 28 70 72 70 2d 3e 78 20 2d 20 68 78 20 2a 20 70 72 70 2d 3e 7a   ┆ dx * sx * (prp->x - hx * prp->z┆
0x17a800…2f5200   29 0a 09 20 20 20 20 2d 20 73 7a 20 2a 20 70 72 70 2d 3e 7a 20 2a 20 28 30 2e 35 20 2a 20 64 78   ┆)      - sz * prp->z * (0.5 * dx┆
0x17a800…2f5200   20 2b 20 76 70 2d 3e 78 5f 6d 69 6e 29 29 3b 0a 0a 09 72 20 3d 20 6d 5b 31 5d 3b 0a 09 72 5b 30   ┆ + vp->x_min));   r = m[1];  r[0┆
0x17a800…2f5200   5d 20 3d 20 30 2e 30 3b 0a 09 72 5b 31 5d 20 3d 20 30 2e 35 20 2a 20 64 79 20 2a 20 73 79 3b 0a   ┆] = 0.0;  r[1] = 0.5 * dy * sy; ┆
0x17a800…2f5200   09 72 5b 32 5d 20 3d 20 2d 28 30 2e 35 20 2a 20 64 79 20 2a 20 28 73 79 20 2a 20 68 79 20 2b 20   ┆ r[2] = -(0.5 * dy * (sy * hy + ┆
0x17a800…2f5200   73 7a 29 20 2b 20 73 7a 20 2a 20 76 70 2d 3e 79 5f 6d 69 6e 29 3b 0a 09 72 5b 33 5d 20 3d 20 2d   ┆sz) + sz * vp->y_min);  r[3] = -┆
0x17a800…2f5200   28 30 2e 35 20 2a 20 64 79 20 2a 20 73 79 20 2a 20 28 70 72 70 2d 3e 79 20 2d 20 68 79 20 2a 20   ┆(0.5 * dy * sy * (prp->y - hy * ┆
0x17a800…2f5200   70 72 70 2d 3e 7a 29 0a 09 20 20 20 20 2d 20 73 7a 20 2a 20 70 72 70 2d 3e 7a 20 2a 20 28 30 2e   ┆prp->z)      - sz * prp->z * (0.┆
0x17a800…2f5200   35 20 2a 20 64 79 20 2b 20 76 70 2d 3e 79 5f 6d 69 6e 29 29 3b 0a 0a 09 72 20 3d 20 6d 5b 32 5d   ┆5 * dy + vp->y_min));   r = m[2]┆
0x17a800…2f5200   3b 0a 09 72 5b 30 5d 20 3d 20 72 5b 31 5d 20 3d 20 30 2e 30 3b 0a 09 7a 66 20 3d 20 28 70 72 70   ┆;  r[0] = r[1] = 0.0;  zf = (prp┆
0x17a800…2f5200   2d 3e 7a 20 2d 20 6d 61 70 2d 3e 66 72 6f 6e 74 5f 70 6c 61 6e 65 29 20 2f 20 28 70 72 70 2d 3e   ┆->z - map->front_plane) / (prp->┆
0x17a800…2f5200   7a 20 2d 20 6d 61 70 2d 3e 62 61 63 6b 5f 70 6c 61 6e 65 29 3b 0a 09 69 66 20 28 20 50 48 47 5f   ┆z - map->back_plane);  if ( PHG_┆
0x17a800…2f5200   4e 45 41 52 5f 5a 45 52 4f 28 20 31 2e 30 20 2d 20 7a 66 29 29 20 7b 0a 09 20 20 20 20 72 5b 32   ┆NEAR_ZERO( 1.0 - zf)) {      r[2┆
0x17a800…2f5200   5d 20 3d 20 30 2e 30 3b 0a 09 20 20 20 20 72 5b 33 5d 20 3d 20 73 7a 20 2a 20 70 72 70 2d 3e 7a   ┆] = 0.0;      r[3] = sz * prp->z┆
0x17a800…2f5200   20 2a 20 76 70 2d 3e 7a 5f 6d 61 78 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 72 5b 32   ┆ * vp->z_max;  } else {      r[2┆
0x17a800…2f5200   5d 20 3d 20 73 7a 20 2a 20 28 28 64 7a 20 2f 20 28 31 2e 30 20 2d 20 7a 66 29 29 20 2d 20 76 70   ┆] = sz * ((dz / (1.0 - zf)) - vp┆
0x17a800…2f5200   2d 3e 7a 5f 6d 61 78 29 3b 0a 09 20 20 20 20 72 5b 33 5d 20 3d 20 73 7a 20 2a 20 70 72 70 2d 3e   ┆->z_max);      r[3] = sz * prp->┆
0x17a800…2f5200   7a 20 2a 20 76 70 2d 3e 7a 5f 6d 61 78 20 2d 20 28 64 7a 2f 28 31 2e 30 2d 7a 66 29 29 20 2a 20   ┆z * vp->z_max - (dz/(1.0-zf)) * ┆
0x17a800…2f5200   28 73 7a 20 2a 20 70 72 70 2d 3e 7a 20 2d 20 7a 66 29 3b 0a 09 7d 0a 0a 09 72 20 3d 20 6d 5b 33   ┆(sz * prp->z - zf);  }   r = m[3┆
0x17a800…2f5200   5d 3b 0a 09 72 5b 30 5d 20 3d 20 72 5b 31 5d 20 3d 20 30 2e 30 3b 0a 09 72 5b 32 5d 20 3d 20 2d   ┆];  r[0] = r[1] = 0.0;  r[2] = -┆
0x17a800…2f5200   73 7a 3b 0a 09 72 5b 33 5d 20 3d 20 73 7a 20 2a 20 70 72 70 2d 3e 7a 3b 0a 0c 0a 20 20 20 20 7d   ┆sz;  r[3] = sz * prp->z;       }┆
0x17a800…2f5200   20 65 6c 73 65 20 7b 09 2f 2a 20 70 61 72 61 6c 6c 65 6c 20 2a 2f 0a 09 2a 65 72 72 6f 72 5f 69   ┆ else { /* parallel */  *error_i┆
0x17a800…2f5200   6e 64 20 3d 20 30 3b 0a 09 73 78 20 3d 20 64 78 20 2f 20 28 77 69 6e 2d 3e 78 5f 6d 61 78 20 2d   ┆nd = 0;  sx = dx / (win->x_max -┆
0x17a800…2f5200   20 77 69 6e 2d 3e 78 5f 6d 69 6e 29 3b 0a 09 73 79 20 3d 20 64 79 20 2f 20 28 77 69 6e 2d 3e 79   ┆ win->x_min);  sy = dy / (win->y┆
0x17a800…2f5200   5f 6d 61 78 20 2d 20 77 69 6e 2d 3e 79 5f 6d 69 6e 29 3b 0a 09 68 78 20 3d 20 28 70 72 70 2d 3e   ┆_max - win->y_min);  hx = (prp->┆
0x17a800…2f5200   78 20 2d 20 30 2e 35 20 2a 20 28 77 69 6e 2d 3e 78 5f 6d 69 6e 20 2b 20 77 69 6e 2d 3e 78 5f 6d   ┆x - 0.5 * (win->x_min + win->x_m┆
0x17a800…2f5200   61 78 29 29 0a 09 20 20 20 20 2f 20 28 6d 61 70 2d 3e 76 69 65 77 5f 70 6c 61 6e 65 20 2d 20 70   ┆ax))      / (map->view_plane - p┆
0x17a800…2f5200   72 70 2d 3e 7a 29 3b 0a 09 68 79 20 3d 20 28 70 72 70 2d 3e 79 20 2d 20 30 2e 35 20 2a 20 28 77   ┆rp->z);  hy = (prp->y - 0.5 * (w┆
0x17a800…2f5200   69 6e 2d 3e 79 5f 6d 69 6e 20 2b 20 77 69 6e 2d 3e 79 5f 6d 61 78 29 29 0a 09 20 20 20 20 2f 20   ┆in->y_min + win->y_max))      / ┆
0x17a800…2f5200   28 6d 61 70 2d 3e 76 69 65 77 5f 70 6c 61 6e 65 20 2d 20 70 72 70 2d 3e 7a 29 3b 0a 0a 09 72 20   ┆(map->view_plane - prp->z);   r ┆
0x17a800…2f5200   3d 20 6d 5b 30 5d 3b 0a 09 72 5b 30 5d 20 3d 20 73 78 3b 0a 09 72 5b 31 5d 20 3d 20 30 2e 30 3b   ┆= m[0];  r[0] = sx;  r[1] = 0.0;┆
0x17a800…2f5200   0a 09 72 5b 32 5d 20 3d 20 73 78 20 2a 20 68 78 3b 0a 09 72 5b 33 5d 20 3d 20 76 70 2d 3e 78 5f   ┆  r[2] = sx * hx;  r[3] = vp->x_┆
0x17a800…2f5200   6d 69 6e 20 2d 20 73 78 20 2a 20 28 68 78 20 2a 20 6d 61 70 2d 3e 76 69 65 77 5f 70 6c 61 6e 65   ┆min - sx * (hx * map->view_plane┆
0x17a800…2f5200   20 2b 20 77 69 6e 2d 3e 78 5f 6d 69 6e 29 3b 0a 0a 09 72 20 3d 20 6d 5b 31 5d 3b 0a 09 72 5b 30   ┆ + win->x_min);   r = m[1];  r[0┆
0x17a800…2f5200   5d 20 3d 20 30 2e 30 3b 0a 09 72 5b 31 5d 20 3d 20 73 79 3b 0a 09 72 5b 32 5d 20 3d 20 73 79 20   ┆] = 0.0;  r[1] = sy;  r[2] = sy ┆
0x17a800…2f5200   2a 20 68 79 3b 0a 09 72 5b 33 5d 20 3d 20 76 70 2d 3e 79 5f 6d 69 6e 20 2d 20 73 79 20 2a 20 28   ┆* hy;  r[3] = vp->y_min - sy * (┆
0x17a800…2f5200   68 79 20 2a 20 6d 61 70 2d 3e 76 69 65 77 5f 70 6c 61 6e 65 20 2b 20 77 69 6e 2d 3e 79 5f 6d 69   ┆hy * map->view_plane + win->y_mi┆
0x17a800…2f5200   6e 29 3b 0a 0a 09 72 20 20 3d 20 6d 5b 32 5d 3b 0a 09 72 5b 30 5d 20 3d 20 72 5b 31 5d 20 3d 20   ┆n);   r  = m[2];  r[0] = r[1] = ┆
0x17a800…2f5200   30 2e 30 3b 0a 09 69 66 20 28 20 50 48 47 5f 4e 45 41 52 5f 5a 45 52 4f 28 76 76 7a 29 29 0a 09   ┆0.0;  if ( PHG_NEAR_ZERO(vvz))  ┆
0x17a800…2f5200   20 20 20 20 72 5b 32 5d 20 3d 20 30 2e 30 3b 0a 09 65 6c 73 65 0a 09 20 20 20 20 72 5b 32 5d 20   ┆    r[2] = 0.0;  else      r[2] ┆
0x17a800…2f5200   3d 20 64 7a 20 2f 20 76 76 7a 3b 0a 09 72 5b 33 5d 20 3d 20 76 70 2d 3e 7a 5f 6d 69 6e 20 2d 20   ┆= dz / vvz;  r[3] = vp->z_min - ┆
0x17a800…2f5200   72 5b 32 5d 20 2a 20 6d 61 70 2d 3e 62 61 63 6b 5f 70 6c 61 6e 65 3b 0a 0a 09 72 20 3d 20 6d 5b   ┆r[2] * map->back_plane;   r = m[┆
0x17a800…2f5200   33 5d 3b 0a 09 72 5b 30 5d 20 3d 20 72 5b 31 5d 20 3d 20 72 5b 32 5d 20 3d 20 30 2e 30 3b 0a 09   ┆3];  r[0] = r[1] = r[2] = 0.0;  ┆
0x17a800…2f5200   72 5b 33 5d 20 3d 20 31 2e 30 3b 0a 20 20 20 20 7d 0a 7d 0a 0c 0a 0a 23 69 66 64 65 66 20 44 45   ┆r[3] = 1.0;     } }    #ifdef DE┆
0x17a800…2f5200   42 55 47 0a 76 6f 69 64 0a 70 65 76 61 6c 5f 76 69 65 77 5f 6d 61 70 5f 6d 61 74 72 69 78 33 5f   ┆BUG void peval_view_map_matrix3_┆
0x17a800…2f5200   64 65 62 75 67 28 20 6d 61 70 2c 20 65 72 72 6f 72 5f 69 6e 64 2c 20 6d 29 0a 20 20 20 20 50 76   ┆debug( map, error_ind, m)     Pv┆
0x17a800…2f5200   69 65 77 5f 6d 61 70 33 09 2a 6d 61 70 3b 09 09 2f 2a 20 76 69 65 77 20 6d 61 70 70 69 6e 67 09   ┆iew_map3 *map;  /* view mapping ┆
0x17a800…2f5200   2a 2f 0a 20 20 20 20 50 69 6e 74 09 09 2a 65 72 72 6f 72 5f 69 6e 64 3b 09 2f 2a 20 4f 55 54 20   ┆*/     Pint  *error_ind; /* OUT ┆
0x17a800…2f5200   65 72 72 6f 72 20 69 6e 64 69 63 61 74 6f 72 09 2a 2f 0a 20 20 20 20 72 65 67 69 73 74 65 72 20   ┆error indicator */     register ┆
0x17a800…2f5200   50 6d 61 74 72 69 78 33 09 6d 3b 09 09 2f 2a 20 4f 55 54 20 76 69 65 77 20 6d 61 70 70 69 6e 67   ┆Pmatrix3 m;  /* OUT view mapping┆
0x17a800…2f5200   20 6d 61 74 72 69 78 09 2a 2f 0a 7b 0a 20 20 20 20 2f 2a 20 50 72 6f 63 65 64 75 72 65 3a 0a 20   ┆ matrix */ {     /* Procedure:  ┆
0x17a800…2f5200   20 20 20 20 20 28 50 65 72 73 70 65 63 74 69 76 65 29 3a 0a 09 20 2d 20 54 72 61 6e 73 6c 61 74   ┆     (Perspective):   - Translat┆
0x17a800…2f5200   65 20 74 6f 20 50 52 50 2c 09 09 09 54 63 0a 09 20 2d 20 43 6f 6e 76 65 72 74 20 74 6f 20 6c 65   ┆e to PRP,   Tc   - Convert to le┆
0x17a800…2f5200   66 74 20 68 61 6e 64 65 64 20 63 6f 6f 72 64 73 2c 09 54 6c 72 0a 09 20 2d 20 53 68 65 61 72 2c   ┆ft handed coords, Tlr   - Shear,┆
0x17a800…2f5200   09 09 09 09 48 0a 09 20 2d 20 53 63 61 6c 65 20 74 6f 20 63 61 6e 6f 6e 69 63 61 6c 20 76 69 65   ┆    H   - Scale to canonical vie┆
0x17a800…2f5200   77 20 76 6f 6c 75 6d 65 2c 09 53 0a 09 20 2d 20 4e 6f 72 6d 61 6c 69 7a 65 20 70 65 72 73 70 65   ┆w volume, S   - Normalize perspe┆
0x17a800…2f5200   63 74 69 76 65 20 76 69 65 77 20 76 6f 6c 75 6d 65 2c 09 4e 74 70 0a 09 20 2d 20 53 63 61 6c 65   ┆ctive view volume, Ntp   - Scale┆
0x17a800…2f5200   20 74 6f 20 76 69 65 77 70 6f 72 74 2c 09 09 09 53 76 70 0a 09 20 2d 20 43 6f 6e 76 65 72 74 20   ┆ to viewport,   Svp   - Convert ┆
0x17a800…2f5200   74 6f 20 72 69 67 68 74 20 68 61 6e 64 65 64 20 63 6f 6f 72 64 73 2c 09 54 6c 72 0a 09 20 2d 20   ┆to right handed coords, Tlr   - ┆
0x17a800…2f5200   54 72 61 6e 73 6c 61 74 65 20 74 6f 20 76 69 65 77 70 6f 72 74 2c 09 09 54 76 70 0a 0a 20 20 20   ┆Translate to viewport,  Tvp     ┆
0x17a800…2f5200   20 20 20 28 50 61 72 61 6c 6c 65 6c 29 3a 0a 09 20 2d 20 54 72 61 6e 73 6c 61 74 65 20 74 6f 20   ┆   (Parallel):   - Translate to ┆
0x17a800…2f5200   76 69 65 77 20 70 6c 61 6e 65 2c 09 09 54 63 0a 09 20 2d 20 53 68 65 61 72 20 61 62 6f 75 74 20   ┆view plane,  Tc   - Shear about ┆
0x17a800…2f5200   74 68 65 20 76 69 65 77 20 70 6c 61 6e 65 2c 09 09 48 0a 09 20 2d 20 54 72 61 6e 73 6c 61 74 65   ┆the view plane,  H   - Translate┆
0x17a800…2f5200   20 62 61 63 6b 2c 09 09 09 54 63 20 69 6e 76 65 72 73 65 0a 09 20 2d 20 54 72 61 6e 73 6c 61 74   ┆ back,   Tc inverse   - Translat┆
0x17a800…2f5200   65 20 77 69 6e 64 6f 77 20 74 6f 20 6f 72 69 67 69 6e 2c 09 09 54 6c 0a 09 20 2d 20 53 63 61 6c   ┆e window to origin,  Tl   - Scal┆
0x17a800…2f5200   65 20 74 6f 20 63 61 6e 6f 6e 69 63 61 6c 20 76 69 65 77 20 76 6f 6c 75 6d 65 2c 09 53 0a 09 20   ┆e to canonical view volume, S   ┆
0x17a800…2f5200   2d 20 53 63 61 6c 65 20 74 6f 20 76 69 65 77 70 6f 72 74 2c 09 09 09 53 76 70 0a 09 20 2d 20 54   ┆- Scale to viewport,   Svp   - T┆
0x17a800…2f5200   72 61 6e 73 6c 61 74 65 20 74 6f 20 76 69 65 77 70 6f 72 74 2c 09 09 54 76 70 0a 20 20 20 20 20   ┆ranslate to viewport,  Tvp      ┆
0x17a800…2f5200   2a 2f 0a 0a 20 20 20 20 72 65 67 69 73 74 65 72 20 50 70 6f 69 6e 74 33 09 2a 70 72 70 20 3d 20   ┆*/      register Ppoint3 *prp = ┆
0x17a800…2f5200   26 6d 61 70 2d 3e 70 72 6f 6a 5f 72 65 66 5f 70 6f 69 6e 74 3b 0a 20 20 20 20 72 65 67 69 73 74   ┆&map->proj_ref_point;     regist┆
0x17a800…2f5200   65 72 20 50 6c 69 6d 69 74 33 09 2a 76 70 20 3d 20 26 6d 61 70 2d 3e 76 70 3b 0a 20 20 20 20 72   ┆er Plimit3 *vp = &map->vp;     r┆
0x17a800…2f5200   65 67 69 73 74 65 72 20 50 6c 69 6d 69 74 09 2a 77 69 6e 20 3d 20 26 6d 61 70 2d 3e 77 69 6e 3b   ┆egister Plimit *win = &map->win;┆
0x17a800…2f5200   0a 0a 20 20 20 20 64 6f 75 62 6c 65 09 76 76 7a 20 3d 20 6d 61 70 2d 3e 66 72 6f 6e 74 5f 70 6c   ┆      double vvz = map->front_pl┆
0x17a800…2f5200   61 6e 65 20 2d 20 6d 61 70 2d 3e 62 61 63 6b 5f 70 6c 61 6e 65 3b 0a 0a 20 20 20 20 50 6d 61 74   ┆ane - map->back_plane;      Pmat┆
0x17a800…2f5200   72 69 78 33 09 54 63 2c 20 48 2c 20 53 2c 20 4e 74 70 2c 20 53 76 70 2c 20 54 6c 72 2c 20 54 76   ┆rix3 Tc, H, S, Ntp, Svp, Tlr, Tv┆
0x17a800…2f5200   70 2c 20 54 6c 3b 0a 20 20 20 20 50 6d 61 74 72 69 78 33 09 4d 3b 0a 0a 20 20 20 20 73 74 61 74   ┆p, Tl;     Pmatrix3 M;      stat┆
0x17a800…2f5200   69 63 20 50 6d 61 74 72 69 78 33 09 69 64 65 6e 74 69 74 79 20 3d 20 7b 20 31 2e 30 2c 20 30 2e   ┆ic Pmatrix3 identity = { 1.0, 0.┆
0x17a800…2f5200   30 2c 20 30 2e 30 2c 20 30 2e 30 2c 0a 09 09 09 09 20 20 20 20 20 30 2e 30 2c 20 31 2e 30 2c 20   ┆0, 0.0, 0.0,          0.0, 1.0, ┆
0x17a800…2f5200   30 2e 30 2c 20 30 2e 30 2c 0a 09 09 09 09 20 20 20 20 20 30 2e 30 2c 20 30 2e 30 2c 20 31 2e 30   ┆0.0, 0.0,          0.0, 0.0, 1.0┆
0x17a800…2f5200   2c 20 30 2e 30 2c 0a 09 09 09 09 20 20 20 20 20 30 2e 30 2c 20 30 2e 30 2c 20 30 2e 30 2c 20 31   ┆, 0.0,          0.0, 0.0, 0.0, 1┆
0x17a800…2f5200   2e 30 0a 09 09 09 09 20 20 20 7d 3b 0a 0a 20 20 20 20 69 66 20 28 20 21 43 42 5f 45 4e 54 52 59   ┆.0        };      if ( !CB_ENTRY┆
0x17a800…2f5200   5f 43 48 45 43 4b 28 20 70 68 67 5f 63 75 72 5f 63 70 68 2c 20 30 2c 20 50 66 6e 5f 49 4e 51 55   ┆_CHECK( phg_cur_cph, 0, Pfn_INQU┆
0x17a800…2f5200   49 52 59 29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 32 3b 0a 0a 20 20 20   ┆IRY)) {  *error_ind = ERR2;     ┆
0x17a800…2f5200   20 7d 20 65 6c 73 65 20 69 66 20 28 20 21 28 77 69 6e 2d 3e 78 5f 6d 69 6e 20 3c 20 77 69 6e 2d   ┆ } else if ( !(win->x_min < win-┆
0x17a800…2f5200   3e 78 5f 6d 61 78 29 20 7c 7c 20 21 28 77 69 6e 2d 3e 79 5f 6d 69 6e 20 3c 20 77 69 6e 2d 3e 79   ┆>x_max) || !(win->y_min < win->y┆
0x17a800…2f5200   5f 6d 61 78 29 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 31 35 31 3b 0a 0a   ┆_max)) {  *error_ind = ERR151;  ┆
0x17a800…2f5200   20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 20 21 28 76 70 2d 3e 78 5f 6d 69 6e 20 3c 20 76 70   ┆    } else if ( !(vp->x_min < vp┆
0x17a800…2f5200   2d 3e 78 5f 6d 61 78 29 20 7c 7c 20 21 28 76 70 2d 3e 79 5f 6d 69 6e 20 3c 20 76 70 2d 3e 79 5f   ┆->x_max) || !(vp->y_min < vp->y_┆
0x17a800…2f5200   6d 61 78 29 0a 09 7c 7c 20 21 28 76 70 2d 3e 7a 5f 6d 69 6e 20 3c 3d 20 76 70 2d 3e 7a 5f 6d 61   ┆max)  || !(vp->z_min <= vp->z_ma┆
0x17a800…2f5200   78 29 20 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 31 35 32 3b 0a 20 20 20   ┆x) ) {  *error_ind = ERR152;    ┆
0x17a800…2f5200   20 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 20 50 48 47 5f 4e 45 41 52 5f 5a 45 52 4f 28   ┆      } else if ( PHG_NEAR_ZERO(┆
0x17a800…2f5200   20 76 76 7a 29 20 26 26 20 76 70 2d 3e 7a 5f 6d 69 6e 20 21 3d 20 76 70 2d 3e 7a 5f 6d 61 78 29   ┆ vvz) && vp->z_min != vp->z_max)┆
0x17a800…2f5200   20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 31 35 38 3b 0a 0a 20 20 20 20 7d 20   ┆ {  *error_ind = ERR158;      } ┆
0x17a800…2f5200   65 6c 73 65 20 69 66 20 28 20 6d 61 70 2d 3e 70 72 6f 6a 5f 74 79 70 65 20 3d 3d 20 50 54 59 50   ┆else if ( map->proj_type == PTYP┆
0x17a800…2f5200   45 5f 50 45 52 53 50 45 43 54 0a 09 26 26 20 70 72 70 2d 3e 7a 20 3c 20 6d 61 70 2d 3e 66 72 6f   ┆E_PERSPECT  && prp->z < map->fro┆
0x17a800…2f5200   6e 74 5f 70 6c 61 6e 65 20 26 26 20 70 72 70 2d 3e 7a 20 3e 20 6d 61 70 2d 3e 62 61 63 6b 5f 70   ┆nt_plane && prp->z > map->back_p┆
0x17a800…2f5200   6c 61 6e 65 20 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 31 36 32 3b 0a 0a   ┆lane ) {  *error_ind = ERR162;  ┆
0x17a800…2f5200   20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 20 70 72 70 2d 3e 7a 20 3d 3d 20 6d 61 70 2d 3e 76   ┆    } else if ( prp->z == map->v┆
0x17a800…2f5200   69 65 77 5f 70 6c 61 6e 65 29 20 7b 0a 09 2a 65 72 72 6f 72 5f 69 6e 64 20 3d 20 45 52 52 31 36   ┆iew_plane) {  *error_ind = ERR16┆
0x17a800…2f5200   33 3b 0a 20 20 20 20 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 20 6d 61 70 2d 3e 66 72 6f   ┆3;          } else if ( map->fro┆
0x17a800…2f5200   6e 74 5f 70   ┆nt_p┆
0x17a800…2f5200      ┆┆
          […0xba59…]
0x17a800…2f5200 }

Reduced view